lithium\util\Inflector::singularize PHP Method

singularize() public static method

Changes the form of a word from plural to singular.
public static singularize ( string $word ) : string
$word string Word in plural form.
return string Word in singular form.
    public static function singularize($word)
    {
        if (isset(static::$_singularized[$word])) {
            return static::$_singularized[$word];
        }
        if (empty(static::$_singular['irregular'])) {
            static::$_singular['irregular'] = array_flip(static::$_plural['irregular']);
        }
        extract(static::$_singular);
        if (!isset($regexUninflected) || !isset($regexIrregular)) {
            $regexUninflected = static::_enclose(join('|', $uninflected + static::$_uninflected));
            $regexIrregular = static::_enclose(join('|', array_keys($irregular)));
            static::$_singular += compact('regexUninflected', 'regexIrregular');
        }
        if (preg_match("/(.*)\\b({$regexIrregular})\$/i", $word, $regs)) {
            $singular = substr($word, 0, 1) . substr($irregular[strtolower($regs[2])], 1);
            return static::$_singularized[$word] = $regs[1] . $singular;
        }
        if (preg_match('/^(' . $regexUninflected . ')$/i', $word, $regs)) {
            return static::$_singularized[$word] = $word;
        }
        foreach ($rules as $rule => $replacement) {
            if (preg_match($rule, $word)) {
                return static::$_singularized[$word] = preg_replace($rule, $replacement, $word);
            }
        }
        return static::$_singularized[$word] = $word;
    }

Usage Example

 public function testIndexScaffold()
 {
     $this->_controller->index();
     $scaffold = $this->_controller->access('scaffold');
     $expected = array('base' => '/radium/configurations', 'controller' => 'Configurations', 'library' => 'radium', 'class' => 'MockConfigurations', 'model' => 'radium\\tests\\mocks\\data\\MockConfigurations', 'slug' => Inflector::underscore('MockConfigurations'), 'singular' => Inflector::singularize('MockConfigurations'), 'plural' => Inflector::pluralize('MockConfigurations'), 'table' => Inflector::tableize('MockConfigurations'), 'human' => Inflector::humanize('MockConfigurations'));
     $this->assertEqual($expected, $scaffold);
 }
All Usage Examples Of lithium\util\Inflector::singularize