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; }
/** * @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(); }
public static function getMigrationsNamespace() { $namespace = ClassHelper::getFormatNamespace(self::getInstance()->appNamespace, true); return ClassHelper::getFormatNamespace(sprintf('%s%s', $namespace, 'Migrations'), true, false); }
/** * @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)); }