public function testClassifySelf() { $this->assertEqual(TipyInflector::classify('Welcome'), 'Welcome'); $this->assertEqual(TipyInflector::classify('WelcomeHome'), 'WelcomeHome'); $this->assertEqual(TipyInflector::classify('123welcome'), '123welcome'); $this->assertEqual(TipyInflector::classify('Project'), 'Project'); $this->assertEqual(TipyInflector::classify('BigProjects'), 'BigProject'); $this->assertEqual(TipyInflector::classify('Mouse'), 'Mouse'); }
/** * Check and fill missing association classes * Recognize class names from association names * This allows to define assiciations by specifying * its name only * <code> * $hasMany = ['comments', 'posts']; * </cde> */ private function checkAssociationClasses() { foreach (['hasMany', 'hasOne', 'belongsTo', 'hasManyThrough'] as $assocType) { if (!$this->{$assocType}) { continue; } if (!is_array($this->{$assocType})) { throw new TipyModelException("Association definition should be an Array"); } $assocArray = $this->{$assocType}; foreach ($assocArray as $name => $options) { // If $name is integer then this is assoc specified without options // Make it array for future usage if (is_int($name)) { // Transform ['post'] array to ['post' => []] unset($assocArray[$name]); $name = $options; $assocArray[$name] = []; } if (!array_key_exists('class', $assocArray[$name])) { $assocArray[$name]['class'] = TipyInflector::classify($name); } } $this->{$assocType} = $assocArray; } }