Ouzo\Utilities\Inflector::rules PHP Method

rules() public static method

### Usage: {{{ Inflector::rules('plural', array('/^(inflect)or$/i' => '\1ables')); Inflector::rules('plural', array( 'rules' => array('/^(inflect)ors$/i' => '\1ables'), 'uninflected' => array('dontinflectme'), 'irregular' => array('red' => 'redlings') )); }}}
public static rules ( string $type, array $rules, boolean $reset = false ) : void
$type string The type of inflection, either 'plural' or 'singular'
$rules array An array of rules to be added.
$reset boolean If true, will unset default inflections for all new rules that are being defined in $rules.
return void
    public static function rules($type, $rules, $reset = false)
    {
        foreach ($rules as $rule => $pattern) {
            if (is_array($pattern)) {
                if ($reset) {
                    self::${$type}[$rule] = $pattern;
                } else {
                    if ($rule === 'uninflected') {
                        self::${$type}[$rule] = array_merge($pattern, self::${$type}[$rule]);
                    } else {
                        self::${$type}[$rule] = $pattern + self::${$type}[$rule];
                    }
                }
                unset($rules[$rule], self::${$type}['cache' . ucfirst($rule)]);
                if (isset(self::${$type}['merged'][$rule])) {
                    unset(self::${$type}['merged'][$rule]);
                }
                if ($type === 'plural') {
                    self::$cache['pluralize'] = self::$cache['tableize'] = array();
                } elseif ($type === 'singular') {
                    self::$cache['singularize'] = array();
                }
            }
        }
        self::${$type}['rules'] = $rules + self::${$type}['rules'];
    }

Usage Example

Beispiel #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');
 }