web/enmi/Zend/Tool/Framework/Metadata/Dynamic.php
changeset 19 1c2f13fd785c
parent 0 4eba9c11703f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/enmi/Zend/Tool/Framework/Metadata/Dynamic.php	Thu Jan 20 19:30:54 2011 +0100
@@ -0,0 +1,219 @@
+<?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_Tool
+ * @subpackage Framework
+ * @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: Dynamic.php 20096 2010-01-06 02:05:09Z bkarwin $
+ */
+
+/**
+ * @see Zend_Tool_Framework_Metadata_Interface
+ */
+require_once 'Zend/Tool/Framework/Metadata/Interface.php';
+
+/**
+ * @see Zend_Tool_Framework_Metadata_Attributable
+ */
+require_once 'Zend/Tool/Framework/Metadata/Attributable.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Tool
+ * @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_Tool_Framework_Metadata_Dynamic 
+    implements Zend_Tool_Framework_Metadata_Interface, Zend_Tool_Framework_Metadata_Attributable
+{
+
+    /**
+     * @var string
+     */
+    protected $_type = 'Dynamic';
+
+    /**
+     * @var string
+     */
+    protected $_name = null;
+
+    /**
+     * @var string
+     */
+    protected $_value = null;
+
+    /**
+     * @var array
+     */
+    protected $_dynamicAttributes = array();
+
+    public function __construct($options = array())
+    {
+        if ($options) {
+            $this->setOptions($options);
+        }
+    }
+    
+    public function setOptions(Array $options = array())
+    {
+        foreach ($options as $optName => $optValue) {
+            $methodName = 'set' . $optName;
+            $this->{$methodName}($optValue);
+        }
+    }
+    
+    /**
+     * setType()
+     * 
+     * @param $type
+     * @return Zend_Tool_Framework_Metadata_Dynamic
+     */
+    public function setType($type)
+    {
+        $this->_type = $type;
+        return $this;
+    }
+    
+    /**
+     * getType()
+     *
+     * The type of metadata this describes
+     *
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * setName()
+     * 
+     * @param $name
+     * @return Zend_Tool_Framework_Metadata_Dynamic
+     */
+    public function setName($name)
+    {
+        $this->_name = $name;
+        return $this;
+    }
+    
+    /**
+     * getName()
+     *
+     * Metadata name
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    /**
+     * setValue()
+     * 
+     * @param $value
+     * @return Zend_Tool_Framework_Metadata_Dynamic
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+    
+    /**
+     * getValue()
+     *
+     * Metadata Value
+     *
+     * @return string
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    public function getAttributes()
+    {
+        return $this->_dynamicAttributes;
+    }
+
+    /**
+     * __isset()
+     *
+     * Check if an attrbute is set
+     *
+     * @param string $name
+     * @return bool
+     */
+    public function __isset($name)
+    {
+        return isset($this->_dynamicAttributes[$name]);
+    }
+
+    /**
+     * __unset()
+     *
+     * @param string $name
+     * @return null
+     */
+    public function __unset($name)
+    {
+        unset($this->_dynamicAttributes[$name]);
+        return;
+    }
+
+    /**
+     * __get() - Get a property via property call $metadata->foo
+     *
+     * @param string $name
+     * @return mixed
+     */
+    public function __get($name)
+    {
+        if (method_exists($this, 'get' . $name)) {
+            return $this->{'get' . $name}();
+        } elseif (array_key_exists($name, $this->_dynamicAttributes)) {
+            return $this->_dynamicAttributes[$name];
+        } else {
+            require_once 'Zend/Tool/Framework/Registry/Exception.php';
+            throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this metadata.');
+        }
+    }
+
+    /**
+     * __set() - Set a property via the magic set $metadata->foo = 'foo'
+     *
+     * @param string $name
+     * @param mixed $value
+     */
+    public function __set($name, $value)
+    {
+        if (method_exists($this, 'set' . $name)) {
+            $this->{'set' . $name}($value);
+            return $this;
+        } else {
+            $this->_dynamicAttributes[$name] = $value;
+            return $this;
+        }
+//        {
+//            require_once 'Zend/Tool/Framework/Registry/Exception.php';
+//            throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this registry.');
+//        }
+    }
+
+}