public static function defineClass($className, $extends = '') { // $namespace = 'Eddmash\PowerOrm\Migration\Model'; $namespace = ''; $use = ''; $extendedClass = ''; if (empty($extends) || Model::isModelBase($extends)) { $extends = Model::getFullClassName(); } else { $extendedClass = sprintf('%s%s', ClassHelper::getFormatNamespace($namespace, true), $extends); $use = sprintf('use %s;', $extendedClass); $extends = trim(substr($extends, strripos($extends, '\\')), '\\'); } if (!StringHelper::isEmpty($extendedClass) && !ClassHelper::classExists($extendedClass, $namespace)) { self::$deferedClasses[$extends][] = ['class' => $className, 'extends' => $extends]; return false; } $extends = ClassHelper::getNameFromNs($extends, $namespace); $class = sprintf(self::getTemplate(), $namespace, $use, $className, $extends); $className = sprintf('%s%s', ClassHelper::getFormatNamespace($namespace, true), $className); if (ArrayHelper::hasKey(self::$deferedClasses, $className)) { foreach (self::$deferedClasses[$className] as $deferedClass) { self::defineClass($deferedClass['class'], $deferedClass['extends']); } } if (!ClassHelper::classExists($className, $namespace)) { eval($class); } return $className; }
public function getConstructorArgs() { $constructorArgs = parent::getConstructorArgs(); if (isset($constructorArgs['meta']) && empty($constructorArgs['meta'])) { unset($constructorArgs['meta']); } if (isset($constructorArgs['extends'])) { if (StringHelper::isEmpty($constructorArgs['extends']) || Model::isModelBase($constructorArgs['extends'])) { unset($constructorArgs['extends']); } else { $constructorArgs['extends'] = ClassHelper::getNameFromNs($constructorArgs['extends'], BaseOrm::getModelsNamespace()); } } return $constructorArgs; }
public function prepareMultiInheritance($parentModelName) { if (!self::isModelBase($parentModelName) && !StringHelper::isEmpty($parentModelName)) { $name = ClassHelper::getNameFromNs($parentModelName, BaseOrm::getModelsNamespace()); $attrName = lcfirst(str_replace(' ', '', ucwords(str_replace('\\', ' ', $name)))); $attrName = sprintf('%sPtr', $attrName); if ($this->_fieldCache == null || !ArrayHelper::hasKey($this->_fieldCache, $attrName)) { $field = OneToOneField::createObject(['to' => ClassHelper::getNameFromNs($parentModelName, BaseOrm::getModelsNamespace()), 'onDelete' => Delete::CASCADE, 'name' => $attrName, 'autoCreated' => true, 'parentLink' => true]); $this->addToClass($attrName, $field); $this->meta->parents[$name] = $field; } } }
/** * @dataProvider providerEmptyStrings * * @param $original * * @since 1.1.0 * * @author Eddilbert Macharia (http://eddmash.com) <*****@*****.**> */ public function testStringIsEmpty($original) { $this->assertTrue(StringHelper::isEmpty($original)); }