Blast\Orm\Entity\Definition::processFields PHP 메소드

processFields() 개인적인 메소드

Setup entity fields and determine undefined fields from entity with type string
private processFields ( )
    private function processFields()
    {
        /** @var Column[] $internalFields */
        $internalFields = $this->configuration['fields'];
        $fields = [];
        foreach ($internalFields as $name => $field) {
            // skip if field is no instance of Column
            if (!$field instanceof Column) {
                continue;
            }
            //set table name as key
            if ($field->getName() !== $name) {
                $name = $field->getName();
            }
            $fields[$name] = $field;
        }
        $reflectionClass = new \ReflectionClass($this->getEntity());
        $entityProperties = $reflectionClass->getProperties();
        foreach ($entityProperties as $key => $value) {
            // disallow static properties
            if ($value->isStatic()) {
                continue;
            }
            // skip dynamic column declaration
            $fieldName = $value->getName();
            if (array_key_exists($fieldName, $fields) || array_key_exists(Inflector::camelize($fieldName), $fields) || array_key_exists(Inflector::tableize($fieldName), $fields)) {
                continue;
            }
            $fields[$fieldName] = new Column($fieldName, Type::getType(Type::STRING));
        }
        //remove all relations
        $relations = $this->getRelations();
        foreach ($fields as $key => $value) {
            if (array_key_exists($key, $relations)) {
                unset($fields[$key]);
            }
        }
        $this->configuration['fields'] = $fields;
    }