コード例 #1
0
ファイル: MigrationModel.php プロジェクト: eddmash/powerorm
 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;
 }
コード例 #2
0
ファイル: CreateModel.php プロジェクト: eddmash/powerorm
 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;
 }
コード例 #3
0
ファイル: Model.php プロジェクト: eddmash/powerorm
 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;
         }
     }
 }
コード例 #4
0
ファイル: StringsTest.php プロジェクト: eddmash/powerorm
 /**
  * @dataProvider providerEmptyStrings
  *
  * @param $original
  *
  * @since 1.1.0
  *
  * @author Eddilbert Macharia (http://eddmash.com) <*****@*****.**>
  */
 public function testStringIsEmpty($original)
 {
     $this->assertTrue(StringHelper::isEmpty($original));
 }