Ouzo\Utilities\Inflector::pluralize PHP Метод

pluralize() публичный статический Метод

Returns a word in plural form.
public static pluralize ( string $word ) : string
$word string The word in singular form.
Результат string The word in plural form.
    public static function pluralize($word)
    {
        if (isset(self::$cache['pluralize'][$word])) {
            return self::$cache['pluralize'][$word];
        }
        if (!isset(self::$plural['merged']['irregular'])) {
            self::$plural['merged']['irregular'] = self::$plural['irregular'];
        }
        if (!isset(self::$plural['merged']['uninflected'])) {
            self::$plural['merged']['uninflected'] = array_merge(self::$plural['uninflected'], self::$uninflected);
        }
        if (!isset(self::$plural['cacheUninflected']) || !isset(self::$plural['cacheIrregular'])) {
            self::$plural['cacheUninflected'] = '(?:' . implode('|', self::$plural['merged']['uninflected']) . ')';
            self::$plural['cacheIrregular'] = '(?:' . implode('|', array_keys(self::$plural['merged']['irregular'])) . ')';
        }
        if (preg_match('/(.*)\\b(' . self::$plural['cacheIrregular'] . ')$/i', $word, $regs)) {
            self::$cache['pluralize'][$word] = $regs[1] . substr($word, 0, 1) . substr(self::$plural['merged']['irregular'][strtolower($regs[2])], 1);
            return self::$cache['pluralize'][$word];
        }
        if (preg_match('/^(' . self::$plural['cacheUninflected'] . ')$/i', $word, $regs)) {
            self::$cache['pluralize'][$word] = $word;
            return $word;
        }
        foreach (self::$plural['rules'] as $rule => $replacement) {
            if (preg_match($rule, $word)) {
                self::$cache['pluralize'][$word] = preg_replace($rule, $replacement, $word);
                return self::$cache['pluralize'][$word];
            }
        }
    }

Usage Example

Пример #1
0
 /**
  * Test resetting inflection rules.
  *
  * @return void
  */
 public function testCustomRuleWithReset()
 {
     Inflector::reset();
     $uninflected = array('atlas', 'lapis', 'onibus', 'pires', 'virus', '.*x');
     $pluralIrregular = array('as' => 'ases');
     Inflector::rules('singular', array('rules' => array('/^(.*)(a|e|o|u)is$/i' => '\\1\\2l'), 'uninflected' => $uninflected), true);
     Inflector::rules('plural', array('rules' => array('/^(.*)(a|e|o|u)l$/i' => '\\1\\2is'), 'uninflected' => $uninflected, 'irregular' => $pluralIrregular), true);
     $this->assertEquals(Inflector::pluralize('Alcool'), 'Alcoois');
     $this->assertEquals(Inflector::pluralize('Atlas'), 'Atlas');
     $this->assertEquals(Inflector::singularize('Alcoois'), 'Alcool');
     $this->assertEquals(Inflector::singularize('Atlas'), 'Atlas');
 }
All Usage Examples Of Ouzo\Utilities\Inflector::pluralize