LazyRecord\Schema\SchemaUtils::expandSchemaClasses PHP Метод

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

Get referenced schema classes and put them in order.
public static expandSchemaClasses ( array $classes )
$classes array
    public static function expandSchemaClasses(array $classes)
    {
        $map = array();
        $schemas = array();
        foreach ($classes as $class) {
            $schema = new $class();
            // declare schema
            if ($refs = $schema->getReferenceSchemas()) {
                foreach ($refs as $refClass => $v) {
                    if (isset($map[$refClass])) {
                        continue;
                    }
                    $schemas[] = new $refClass();
                    $map[$refClass] = true;
                }
            }
            if ($schema instanceof TemplateSchema) {
                $expandedSchemas = $schema->provideSchemas();
                foreach ($expandedSchemas as $expandedSchema) {
                    if (isset($map[get_class($expandedSchema)])) {
                        continue;
                    }
                    $schemas[] = $expandedSchema;
                    $map[get_class($expandedSchema)] = true;
                }
            } else {
                if (isset($map[$class])) {
                    continue;
                }
                $schemas[] = $schema;
                $map[$class] = true;
            }
        }
        return $schemas;
    }

Usage Example

Пример #1
0
 /**
  * Returns schema objects
  *
  * @return array Schema objects
  */
 public function getSchemas()
 {
     return SchemaUtils::expandSchemaClasses(ClassUtils::get_declared_schema_classes());
 }