LazyRecord\Schema\SchemaGenerator::generateSchemaFiles PHP Method

generateSchemaFiles() public method

public generateSchemaFiles ( LazyRecord\Schema\SchemaInterface $schema )
$schema LazyRecord\Schema\SchemaInterface
    public function generateSchemaFiles(SchemaInterface $schema)
    {
        $classMap = array();
        $cTemplates = array();
        // always update schema proxy and base classes
        $cTemplates[] = SchemaProxyClassFactory::create($schema);
        $cTemplates[] = BaseModelClassFactory::create($schema, $this->getBaseModelClass());
        $cTemplates[] = BaseCollectionClassFactory::create($schema, $this->getBaseCollectionClass());
        foreach ($cTemplates as $cTemplate) {
            if ($result = $this->updateClassFile($cTemplate, $schema, true)) {
                list($className, $classFile) = $result;
                $classMap[$className] = $classFile;
            }
        }
        if ($result = $this->generateCollectionClass($schema)) {
            list($className, $classFile) = $result;
            $classMap[$className] = $classFile;
        }
        if ($result = $this->generateModelClass($schema)) {
            list($className, $classFile) = $result;
            $classMap[$className] = $classFile;
        }
        return $classMap;
    }

Usage Example

Example #1
0
 public function execute()
 {
     $args = func_get_args();
     $logger = $this->getLogger();
     $config = $this->getConfigLoader(true);
     $this->logger->debug('Finding schemas...');
     $schemas = SchemaUtils::findSchemasByArguments($config, $args, $logger);
     $generator = new SchemaGenerator($config);
     if ($this->options->force) {
         $generator->setForceUpdate(true);
     }
     $classMap = array();
     foreach ($schemas as $schema) {
         if ($this->logger->isDebug()) {
             $this->logger->debug('Checking ' . get_class($schema));
         }
         $generated = $generator->generateSchemaFiles($schema);
         if (!empty($generated)) {
             if ($this->logger->isDebug()) {
                 // $filepath = str_replace(getcwd().'/', '', $schema->getClassFileName());
                 $this->logger->debug('Updated ' . get_class($schema));
                 foreach ($generated as $class => $file) {
                     $this->logger->debug(' - Updated ' . $file);
                 }
             } else {
                 $this->logger->info('Updated ' . get_class($schema));
             }
             $classMap += $generated;
         }
     }
 }