LazyRecord\Utils::findSchemasByArguments PHP Метод

findSchemasByArguments() публичный статический Метод

Returns schema objects.
public static findSchemasByArguments ( ConfigLoader $loader, $args, $logger = null ) : array
$loader ConfigLoader
Результат array schema objects
    public static function findSchemasByArguments(ConfigLoader $loader, $args, $logger = null)
    {
        if (count($args) && !file_exists($args[0])) {
            $classes = array();
            // it's classnames
            foreach ($args as $class) {
                // call class loader to load
                if (class_exists($class, true)) {
                    $classes[] = $class;
                } else {
                    if ($logger) {
                        $logger->warn("{$class} not found.");
                    } else {
                        echo ">>> {$class} not found.\n";
                    }
                }
            }
            return ClassUtils::schema_classes_to_objects($classes);
        } else {
            $finder = new SchemaFinder();
            if (count($args) && file_exists($args[0])) {
                $finder->paths = $args;
                foreach ($args as $file) {
                    if (is_file($file)) {
                        require_once $file;
                    }
                }
            } elseif ($paths = $loader->getSchemaPaths()) {
                $finder->setPaths($paths);
            }
            $finder->find();
            // load class from class map
            if ($classMap = $loader->getClassMap()) {
                foreach ($classMap as $file => $class) {
                    if (!is_numeric($file) && is_string($file)) {
                        require $file;
                    }
                }
            }
            return SchemaLoader::loadDeclaredSchemas();
        }
    }

Usage Example

Пример #1
0
 public function execute()
 {
     $logger = $this->getLogger();
     $options = $this->getOptions();
     $this->logger->debug("Loading config");
     $loader = ConfigLoader::getInstance();
     $loader->loadFromSymbol(true);
     $loader->initForBuild();
     $this->logger->debug("Initializing schema generator...");
     $generator = new SchemaGenerator($loader, $logger);
     $args = func_get_args();
     $classes = Utils::findSchemasByArguments($loader, $args, $this->logger);
     foreach ($classes as $class) {
         $rfc = new ReflectionClass($class);
         $this->logger->info(sprintf("  %-50s %s", $class, $rfc->getFilename()));
     }
     $logger->info('Done');
 }