public static findSchemasByArguments ( |
||
$loader | ||
return | 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();
}
}
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'); }