コード例 #1
0
ファイル: Method.php プロジェクト: theolymp/diem
 public static function fromReflection(Zend_Reflection_Method $reflectionMethod)
 {
     $method = new self();
     $method->setSourceContent($reflectionMethod->getContents(false));
     $method->setSourceDirty(false);
     if ($reflectionMethod->getDocComment() != '') {
         $method->setDocblock(Zend_CodeGenerator_Php_Docblock::fromReflection($reflectionMethod->getDocblock()));
     }
     $method->setFinal($reflectionMethod->isFinal());
     if ($reflectionMethod->isPrivate()) {
         $method->setVisibility(self::VISIBILITY_PRIVATE);
     } elseif ($reflectionMethod->isProtected()) {
         $method->setVisibility(self::VISIBILITY_PROTECTED);
     } else {
         $method->setVisibility(self::VISIBILITY_PUBLIC);
     }
     $method->setStatic($reflectionMethod->isStatic());
     $method->setName($reflectionMethod->getName());
     foreach ($reflectionMethod->getParameters() as $reflectionParameter) {
         $method->setParameter(Zend_CodeGenerator_Php_Parameter::fromReflection($reflectionParameter));
     }
     $body = $reflectionMethod->getBody();
     $body2 = str_replace("\n\n", "\n", $body);
     $body2 = preg_replace("|^\n\\s{4}|muU", "\n", $body2);
     $body2 = preg_replace("|^\\s{4}|muU", "", $body2);
     //    $body2 = str_replace(' ', '.', $body2);
     //dmDebug::kill($body, "\n".$body2);
     $method->setBody($body2);
     return $method;
 }
コード例 #2
0
ファイル: Parameter.php プロジェクト: nhp/shopware-4
    /**
     * fromReflection()
     *
     * @param Zend_Reflection_Parameter $reflectionParameter
     * @return Zend_CodeGenerator_Php_Parameter
     */
    public static function fromReflection(Zend_Reflection_Parameter $reflectionParameter)
    {
        $param = new Zend_CodeGenerator_Php_Parameter();
        $param->setName($reflectionParameter->getName());

        if($reflectionParameter->isArray()) {
            $param->setType('array');
        } else {
            $typeClass = $reflectionParameter->getClass();
            if($typeClass !== null) {
                $param->setType($typeClass->getName());
            }
        }

        $param->setPosition($reflectionParameter->getPosition());

        if($reflectionParameter->isOptional()) {
            $param->setDefaultValue($reflectionParameter->getDefaultValue());
        }
        $param->setPassedByReference($reflectionParameter->isPassedByReference());

        return $param;
    }
コード例 #3
0
ファイル: Method.php プロジェクト: Cryde/sydney-core
 /**
  * setParameter()
  *
  * @param Zend_CodeGenerator_Php_Parameter|array $parameter
  * @return Zend_CodeGenerator_Php_Method
  */
 public function setParameter($parameter)
 {
     if (is_array($parameter)) {
         $parameter = new Zend_CodeGenerator_Php_Parameter($parameter);
         $parameterName = $parameter->getName();
     } elseif ($parameter instanceof Zend_CodeGenerator_Php_Parameter) {
         $parameterName = $parameter->getName();
     } else {
         require_once 'Zend/CodeGenerator/Php/Exception.php';
         throw new Zend_CodeGenerator_Php_Exception('setParameter() expects either an array of method options or an instance of Zend_CodeGenerator_Php_Parameter');
     }
     $this->_parameters[$parameterName] = $parameter;
     return $this;
 }
コード例 #4
0
ファイル: ParameterTest.php プロジェクト: omusico/logica
 /**
  * @dataProvider dataFromReflection_Generate
  * @param string $methodName
  * @param string $expectedCode
  */
 public function testFromReflection_Generate($methodName, $expectedCode)
 {
     $reflParam = $this->getFirstReflectionParameter($methodName);
     $codeGenParam = Zend_CodeGenerator_Php_Parameter::fromReflection($reflParam);
     $this->assertEquals($expectedCode, $codeGenParam->generate());
 }
コード例 #5
0
ファイル: Abstract.php プロジェクト: JPustkuchen/phppcg
 /**
  * @see models_ClassGenerator_Defaults_Interface::createMethodLoad
  */
 public function createMethodLoad()
 {
     $resultMethod = new Zend_CodeGenerator_Php_Method();
     $resultMethod->setName('load');
     $resultMethod->setStatic(true);
     $resultMethod->setVisibility(Zend_CodeGenerator_Php_Property::VISIBILITY_PUBLIC);
     //---------------------- Parameters ---------------------
     $paramZendDbObj = new Zend_CodeGenerator_Php_Parameter();
     $paramZendDbObj->setName('zendDbObj');
     $paramZendDbObj->setType('Zend_Db_Adapter_Abstract');
     $resultMethod->setParameter($paramZendDbObj);
     //Pkeys
     $pkeyAttributes = $this->getPersistenceInformation()->getPkeyAttributes();
     if (!empty($pkeyAttributes)) {
         foreach ($pkeyAttributes as $pkeyAttribute) {
             /* @var $pkeyAttribute Zend_CodeGenerator_Php_Property */
             $paramPkey = new Zend_CodeGenerator_Php_Parameter();
             $paramPkey->setName('par' . ucfirst($pkeyAttribute->getName()));
             $paramPkey->setType(Model_ClassGenerator_PersistenceInformation::getType($pkeyAttribute));
             $resultMethod->setParameter($paramPkey);
         }
     }
     //--------------------------------------------------------
     //Pkeys
     $body = 'if(!isset(' . $this->_provideInstancesKeySelectorString() . ')){' . "\n";
     $docblock = new Zend_CodeGenerator_Php_Docblock();
     $docblock->setShortDescription('Loads the entry from the database.');
     $resultMethod->setDocblock($docblock);
     $body .= "\t" . '$table = self::' . $this->_provideTableConstant() . ';' . "\n";
     //TODO - Konstante!
     $body .= "\t" . '$select = $this->zendDbObj->select($table, \'*\');' . "\n";
     $pkeyAttributes = $this->getPersistenceInformation()->getPkeyAttributes();
     if (!empty($pkeyAttributes)) {
         foreach ($pkeyAttributes as $pkeyAttribute) {
             /* @var $pkeyAttribute Zend_CodeGenerator_Php_Property */
             $body .= "\t" . '$select->where(self::' . $this->_provideTableConstant() . '.\'.\'.self::' . $this->_provideColumnConstant($pkeyAttribute) . '.\'=?\', $this->' . $pkeyAttribute->getName() . ');' . "\n\n";
         }
     }
     $body .= "\t" . 'self::$instance' . $keysString . ' = new self($parZendDbObj);' . "\n";
     $body .= '}' . "\n\n";
     $body .= 'return self::$instance' . $keysString . ';';
     $resultMethod->setBody($body);
     $this->getClass()->setMethod($resultMethod);
 }
コード例 #6
0
 /**
  * Create a CodeGenerator parameter
  *
  * @param	string				$name
  * @param	null|string			$type
  * @param	null|bool			$reference
  *
  * @return	Zend_CodeGenerator_Php_Parameter
  */
 public static function createParam($name, $type = null, $reference = null)
 {
     $param = new Zend_CodeGenerator_Php_Parameter();
     $param->setName($name);
     if (!empty($type)) {
         $param->setType($type);
     }
     if ($reference === true) {
         $param->setPassedByReference(true);
     }
     return $param;
 }