web/Zend/CodeGenerator/Php/Parameter.php
changeset 0 4eba9c11703f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/Zend/CodeGenerator/Php/Parameter.php	Mon Dec 13 18:29:26 2010 +0100
@@ -0,0 +1,250 @@
+<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Parameter.php 21889 2010-04-16 18:40:50Z juokaz $
+ */
+
+/**
+ * @see Zend_CodeGenerator_Php_Abstract
+ */
+require_once 'Zend/CodeGenerator/Php/Abstract.php';
+
+/**
+ * @see Zend_CodeGenerator_Php_ParameterDefaultValue
+ */
+require_once 'Zend/CodeGenerator/Php/Parameter/DefaultValue.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_CodeGenerator
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
+{
+    /**
+     * @var string
+     */
+    protected $_type = null;
+
+    /**
+     * @var string
+     */
+    protected $_name = null;
+
+    /**
+     * @var string
+     */
+    protected $_defaultValue = null;
+
+    /**
+     * @var int
+     */
+    protected $_position = null;
+
+    /**
+     * @var bool
+     */
+    protected $_passedByReference = false;
+
+    /**
+     * 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;
+    }
+
+    /**
+     * setType()
+     *
+     * @param string $type
+     * @return Zend_CodeGenerator_Php_Parameter
+     */
+    public function setType($type)
+    {
+        $this->_type = $type;
+        return $this;
+    }
+
+    /**
+     * getType()
+     *
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * setName()
+     *
+     * @param string $name
+     * @return Zend_CodeGenerator_Php_Parameter
+     */
+    public function setName($name)
+    {
+        $this->_name = $name;
+        return $this;
+    }
+
+    /**
+     * getName()
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    /**
+     * Set the default value of the parameter.
+     *
+     * Certain variables are difficult to expres
+     *
+     * @param null|bool|string|int|float|Zend_CodeGenerator_Php_Parameter_DefaultValue $defaultValue
+     * @return Zend_CodeGenerator_Php_Parameter
+     */
+    public function setDefaultValue($defaultValue)
+    {
+        if($defaultValue === null) {
+            $this->_defaultValue = new Zend_CodeGenerator_Php_Parameter_DefaultValue("null");
+        } else if(is_array($defaultValue)) {
+            $defaultValue = str_replace(array("\r", "\n"), "", var_export($defaultValue, true));
+            $this->_defaultValue = new Zend_CodeGenerator_Php_Parameter_DefaultValue($defaultValue);
+        } else if(is_bool($defaultValue)) {
+            if($defaultValue == true) {
+                $this->_defaultValue = new Zend_CodeGenerator_Php_Parameter_DefaultValue("true");
+            } else {
+                $this->_defaultValue = new Zend_CodeGenerator_Php_Parameter_DefaultValue("false");
+            }
+        } else {
+            $this->_defaultValue = $defaultValue;
+        }
+        return $this;
+    }
+
+    /**
+     * getDefaultValue()
+     *
+     * @return string
+     */
+    public function getDefaultValue()
+    {
+        return $this->_defaultValue;
+    }
+
+    /**
+     * setPosition()
+     *
+     * @param int $position
+     * @return Zend_CodeGenerator_Php_Parameter
+     */
+    public function setPosition($position)
+    {
+        $this->_position = $position;
+        return $this;
+    }
+
+    /**
+     * getPosition()
+     *
+     * @return int
+     */
+    public function getPosition()
+    {
+        return $this->_position;
+    }
+
+    /**
+     * @return bool
+     */
+    public function getPassedByReference()
+    {
+        return $this->_passedByReference;
+    }
+
+    /**
+     * @param bool $passedByReference
+     * @return Zend_CodeGenerator_Php_Parameter
+     */
+    public function setPassedByReference($passedByReference)
+    {
+        $this->_passedByReference = $passedByReference;
+        return $this;
+    }
+
+    /**
+     * generate()
+     *
+     * @return string
+     */
+    public function generate()
+    {
+        $output = '';
+
+        if ($this->_type) {
+            $output .= $this->_type . ' ';
+        }
+
+        if($this->_passedByReference === true) {
+            $output .= '&';
+        }
+
+        $output .= '$' . $this->_name;
+
+        if ($this->_defaultValue !== null) {
+            $output .= ' = ';
+            if (is_string($this->_defaultValue)) {
+                $output .= '\'' . $this->_defaultValue . '\'';
+            } else if($this->_defaultValue instanceof Zend_CodeGenerator_Php_Parameter_DefaultValue) {
+                $output .= (string)$this->_defaultValue;
+            } else {
+                $output .= $this->_defaultValue;
+            }
+        }
+
+        return $output;
+    }
+
+}
\ No newline at end of file