Exemple #1
0
 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;
 }
Exemple #2
0
 /**
  * @param $name
  *
  * @return BaseCommand
  *
  * @since 1.1.0
  *
  * @author Eddilbert Macharia (http://eddmash.com) <*****@*****.**>
  */
 public function fetchCommand($name)
 {
     $name = ucfirst($name);
     $file = null;
     $packageName = null;
     foreach ($this->path as $package => $path) {
         $file_handler = new FileHandler($path);
         $file = $file_handler->getFile($name);
         if ($file !== false) {
             $packageName = $package;
             break;
         }
     }
     if (false === $file) {
         $this->error(sprintf('Unknown command: ` %1$s`. Does the file exists `%2$s/%1$s.php` ?' . PHP_EOL, $name, $this->path));
         $message = $this->ansiFormat(sprintf('php %s.php help', $this->managerName), Console::FG_YELLOW);
         $this->normal(sprintf('Type %s for usage.' . PHP_EOL, $message));
         return false;
     }
     // commands are in the commands namespace
     /** @var $className BaseCommand */
     $className = ClassHelper::getFormatNamespace($packageName) . 'Console\\Command\\' . $name;
     return new $className();
 }
Exemple #3
0
 public static function getMigrationsNamespace()
 {
     $namespace = ClassHelper::getFormatNamespace(self::getInstance()->appNamespace, true);
     return ClassHelper::getFormatNamespace(sprintf('%s%s', $namespace, 'Migrations'), true, false);
 }
Exemple #4
0
 /**
  * @dataProvider namespaceClosingBackslashProvider
  *
  * @since 1.1.0
  *
  * @author Eddilbert Macharia (http://eddmash.com) <*****@*****.**>
  */
 public function testFormatingNamespaceWithClosingBackslash($originalValue, $expectedValue)
 {
     $this->assertEquals($expectedValue, ClassHelper::getFormatNamespace($originalValue, false, true));
 }