Doctrine\Common\Proxy\ProxyGenerator::generateMagicGet PHP Метод

generateMagicGet() приватный Метод

Generates the magic getter invoked when lazy loaded public properties are requested.
private generateMagicGet ( Doctrine\Common\Persistence\Mapping\ClassMetadata $class ) : string
$class Doctrine\Common\Persistence\Mapping\ClassMetadata
Результат string
    private function generateMagicGet(ClassMetadata $class)
    {
        $lazyPublicProperties = array_keys($this->getLazyLoadedPublicProperties($class));
        $reflectionClass = $class->getReflectionClass();
        $hasParentGet = false;
        $returnReference = '';
        $inheritDoc = '';
        if ($reflectionClass->hasMethod('__get')) {
            $hasParentGet = true;
            $inheritDoc = '{@inheritDoc}';
            if ($reflectionClass->getMethod('__get')->returnsReference()) {
                $returnReference = '& ';
            }
        }
        if (empty($lazyPublicProperties) && !$hasParentGet) {
            return '';
        }
        $magicGet = <<<EOT
    /**
     * {$inheritDoc}
     * @param string \$name
     */
    public function {$returnReference}__get(\$name)
    {

EOT;
        if (!empty($lazyPublicProperties)) {
            $magicGet .= <<<'EOT'
        if (array_key_exists($name, $this->__getLazyProperties())) {
            $this->__initializer__ && $this->__initializer__->__invoke($this, '__get', [$name]);

            return $this->$name;
        }


EOT;
        }
        if ($hasParentGet) {
            $magicGet .= <<<'EOT'
        $this->__initializer__ && $this->__initializer__->__invoke($this, '__get', [$name]);

        return parent::__get($name);

EOT;
        } else {
            $magicGet .= <<<'EOT'
        trigger_error(sprintf('Undefined property: %s::$%s', __CLASS__, $name), E_USER_NOTICE);

EOT;
        }
        $magicGet .= "    }";
        return $magicGet;
    }