Viewing file: Property.php (5.19 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category Zend * @package Zend_CodeGenerator * @subpackage PHP * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id: Property.php 18951 2009-11-12 16:26:19Z alexander $ */
/** * @see Zend_CodeGenerator_Php_Member_Abstract */ require_once 'Zend/CodeGenerator/Php/Member/Abstract.php';
/** * @see Zend_CodeGenerator_Php_Property_DefaultValue */ require_once 'Zend/CodeGenerator/Php/Property/DefaultValue.php';
/** * @category Zend * @package Zend_CodeGenerator * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_CodeGenerator_Php_Property extends Zend_CodeGenerator_Php_Member_Abstract {
/** * @var bool */ protected $_isConst = null;
/** * @var string */ protected $_defaultValue = null;
/** * fromReflection() * * @param Zend_Reflection_Property $reflectionProperty * @return Zend_CodeGenerator_Php_Property */ public static function fromReflection(Zend_Reflection_Property $reflectionProperty) { $property = new self();
$property->setName($reflectionProperty->getName());
$allDefaultProperties = $reflectionProperty->getDeclaringClass()->getDefaultProperties();
$property->setDefaultValue($allDefaultProperties[$reflectionProperty->getName()]);
if ($reflectionProperty->getDocComment() != '') { $property->setDocblock(Zend_CodeGenerator_Php_Docblock::fromReflection($reflectionProperty->getDocComment())); }
if ($reflectionProperty->isStatic()) { $property->setStatic(true); }
if ($reflectionProperty->isPrivate()) { $property->setVisibility(self::VISIBILITY_PRIVATE); } elseif ($reflectionProperty->isProtected()) { $property->setVisibility(self::VISIBILITY_PROTECTED); } else { $property->setVisibility(self::VISIBILITY_PUBLIC); }
$property->setSourceDirty(false);
return $property; }
/** * setConst() * * @param bool $const * @return Zend_CodeGenerator_Php_Property */ public function setConst($const) { $this->_isConst = $const; return $this; }
/** * isConst() * * @return bool */ public function isConst() { return ($this->_isConst) ? true : false; }
/** * setDefaultValue() * * @param Zend_CodeGenerator_Php_Property_DefaultValue|string|array $defaultValue * @return Zend_CodeGenerator_Php_Property */ public function setDefaultValue($defaultValue) { // if it looks like if (is_array($defaultValue) && array_key_exists('value', $defaultValue) && array_key_exists('type', $defaultValue)) { $defaultValue = new Zend_CodeGenerator_Php_Property_DefaultValue($defaultValue); }
if (!($defaultValue instanceof Zend_CodeGenerator_Php_Property_DefaultValue)) { $defaultValue = new Zend_CodeGenerator_Php_Property_DefaultValue(array('value' => $defaultValue)); }
$this->_defaultValue = $defaultValue; return $this; }
/** * getDefaultValue() * * @return Zend_CodeGenerator_Php_Property_DefaultValue */ public function getDefaultValue() { return $this->_defaultValue; }
/** * generate() * * @return string */ public function generate() { $name = $this->getName(); $defaultValue = $this->getDefaultValue();
$output = '';
if (($docblock = $this->getDocblock()) !== null) { $docblock->setIndentation(' '); $output .= $docblock->generate(); }
if ($this->isConst()) { if ($defaultValue != null && !$defaultValue->isValidConstantType()) { require_once 'Zend/CodeGenerator/Php/Exception.php'; throw new Zend_CodeGenerator_Php_Exception('The property ' . $this->_name . ' is said to be ' . 'constant but does not have a valid constant value.'); } $output .= $this->_indentation . 'const ' . $name . ' = ' . (($defaultValue !== null) ? $defaultValue->generate() : 'null;'); } else { $output .= $this->_indentation . $this->getVisibility() . (($this->isStatic()) ? ' static' : '') . ' $' . $name . ' = ' . (($defaultValue !== null) ? $defaultValue->generate() : 'null;'); } return $output; }
}
|