Pagekit\Database\ORM\MetadataManager::load PHP Method

load() protected method

Loads the metadata of the given class.
protected load ( ReflectionClass $class ) : Pagekit\Database\ORM\Metadata
$class ReflectionClass
return Pagekit\Database\ORM\Metadata
    protected function load(\ReflectionClass $class)
    {
        $parent = null;
        foreach ($this->getParentClasses($class) as $class) {
            $name = $class->getName();
            if (isset($this->metadata[$name])) {
                $parent = $this->metadata[$name];
                continue;
            }
            $config = [];
            if ($parent) {
                foreach ($parent->getFields() as $field) {
                    if (!isset($field['inherited']) && !$parent->isMappedSuperclass()) {
                        $field['inherited'] = $parent->getClass();
                    }
                    $config['fields'][$field['name']] = $field;
                }
                foreach ($parent->getRelationMappings() as $relation) {
                    if (!isset($relation['inherited']) && !$parent->isMappedSuperclass()) {
                        $relation['inherited'] = $parent->getClass();
                    }
                    $config['relations'][$relation['name']] = $relation;
                }
                if ($identifier = $parent->getIdentifier()) {
                    $config['identifier'] = $identifier;
                }
                $config['events'] = $parent->getEvents();
            }
            $this->metadata[$name] = $parent = new Metadata($this, $name, $this->loader->load($class, $config));
        }
        return $parent;
    }