LazyRecord\Schema\Factory\SchemaProxyClassFactory::create PHP Method

create() public static method

public static create ( DeclareSchema $schema )
$schema lazyrecord\schema\DeclareSchema
    public static function create(DeclareSchema $schema)
    {
        $schemaClass = get_class($schema);
        $schemaArray = $schema->export();
        $cTemplate = new ClassFile($schema->getSchemaProxyClass());
        $cTemplate->extendClass('\\LazyRecord\\Schema\\RuntimeSchema');
        $cTemplate->addConsts(array('schema_class' => $schemaClass, 'model_name' => $schema->getModelName(), 'model_namespace' => $schema->getNamespace(), 'COLLECTION_CLASS' => $schemaArray['collection_class'], 'MODEL_CLASS' => $schemaArray['model_class'], 'PRIMARY_KEY' => $schema->getPrimaryKey(), 'TABLE' => $schema->getTable(), 'LABEL' => $schema->getLabel()));
        $cTemplate->useClass('\\LazyRecord\\Schema\\RuntimeColumn');
        $cTemplate->useClass('\\LazyRecord\\Schema\\Relationship\\Relationship');
        $cTemplate->addPublicProperty('columnNames', $schema->getColumnNames());
        $cTemplate->addPublicProperty('primaryKey', $schema->getPrimaryKey());
        $cTemplate->addPublicProperty('columnNamesIncludeVirtual', $schema->getColumnNames(true));
        $cTemplate->addPublicProperty('label', $schemaArray['label']);
        $cTemplate->addPublicProperty('readSourceId', $schemaArray['read_data_source']);
        $cTemplate->addPublicProperty('writeSourceId', $schemaArray['write_data_source']);
        $cTemplate->addPublicProperty('relations', array());
        $cTemplate->addStaticVar('column_hash', array_fill_keys($schema->getColumnNames(), 1));
        $cTemplate->addStaticVar('mixin_classes', array_reverse($schema->getMixinSchemaClasses()));
        $constructor = $cTemplate->addMethod('public', '__construct', []);
        if (!empty($schemaArray['relations'])) {
            $constructor->block[] = '$this->relations = ' . php_var_export($schemaArray['relations']) . ';';
        }
        foreach ($schemaArray['column_data'] as $columnName => $columnAttributes) {
            // $this->columns[ $column->name ] = new RuntimeColumn($column->name, $column->export());
            $constructor->block[] = '$this->columns[ ' . var_export($columnName, true) . ' ] = new RuntimeColumn(' . var_export($columnName, true) . ',' . php_var_export($columnAttributes['attributes']) . ');';
        }
        // $method->block[] = 'parent::__construct();';
        /*
        // export column names including virutal columns
        // Aggregate basic translations from labels
        $msgIds = $schema->getMsgIds();
        $cTemplate->setMsgIds($msgIds);
        */
        return $cTemplate;
    }

Usage Example

 public function generateSchema(SchemaInterface $schema, $overwrite = false)
 {
     $classMap = array();
     $cTemplates = array();
     $cTemplates[] = BaseModelClassFactory::create($schema, $this->getBaseModelClass());
     $cTemplates[] = SchemaProxyClassFactory::create($schema);
     $cTemplates[] = BaseCollectionClassFactory::create($schema, $this->getBaseCollectionClass());
     foreach ($cTemplates as $cTemplate) {
         if ($result = $this->updateClassFile($cTemplate, $schema, $overwrite)) {
             list($className, $classFile) = $result;
             $classMap[$className] = $classFile;
         }
     }
     if ($result = $this->generateCollectionClass($schema, false)) {
         list($className, $classFile) = $result;
         $classMap[$className] = $classFile;
     }
     if ($result = $this->generateModelClass($schema, false)) {
         list($className, $classFile) = $result;
         $classMap[$className] = $classFile;
     }
     return $classMap;
 }
All Usage Examples Of LazyRecord\Schema\Factory\SchemaProxyClassFactory::create
SchemaProxyClassFactory