예제 #1
0
 public function testGenerateIsCorrect()
 {
     $this->_parameter->setType('Foo');
     $this->_parameter->setName('bar');
     $this->_parameter->setDefaultValue(15);
     $this->assertEquals('Foo $bar = 15', $this->_parameter->generate());
     $this->_parameter->setDefaultValue('foo');
     $this->assertEquals('Foo $bar = \'foo\'', $this->_parameter->generate());
 }
예제 #2
0
 /**
  * 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
 /**
  * @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);
 }
예제 #4
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;
 }