public function getModelInstance() { if (!$this->setup) { $this->runSetup(); $this->setup = true; } return InjectionContainer::resolve(Nibii::getClassName($this->options['model'], $this->type)); }
public function runSetup() { $model = InjectionContainer::resolve(Nibii::getClassName($this->options['model'], self::BELONGS_TO)); if ($this->options['foreign_key'] == null) { $this->options['foreign_key'] = $model->getDescription()->getPrimaryKey()[0]; } if ($this->options['local_key'] == null) { $this->options['local_key'] = Text::singularize($model->getTable()) . '_id'; } }
public function getJunctionClassName($classA, $classB) { $classBParts = explode('\\', substr(nibii\Nibii::getClassName($classB), 1)); $classAParts = explode('\\', $classA); $joinerParts = []; foreach ($classAParts as $i => $part) { if ($part == $classBParts[$i]) { $joinerParts[] = $part; } else { break; } } $class = [end($classAParts), end($classBParts)]; sort($class); $joinerParts[] = implode('', $class); return implode('\\', $joinerParts); }