diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:39:39 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:39:39 +0000 |
commit | 8ca6cc32b2c789a3149861159ad258f2cb9491e3 (patch) | |
tree | 2492de6f1528dd44eaa169a5c1555026d9cb75ec /library/vendor/Zend/Server | |
parent | Initial commit. (diff) | |
download | icingaweb2-upstream.tar.xz icingaweb2-upstream.zip |
Adding upstream version 2.11.4.upstream/2.11.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/vendor/Zend/Server')
19 files changed, 3266 insertions, 0 deletions
diff --git a/library/vendor/Zend/Server/Abstract.php b/library/vendor/Zend/Server/Abstract.php new file mode 100644 index 0000000..7f3d1eb --- /dev/null +++ b/library/vendor/Zend/Server/Abstract.php @@ -0,0 +1,235 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** Zend_Server_Interface */ + +/** + * Zend_Server_Definition + */ + +/** + * Zend_Server_Method_Definition + */ + +/** + * Zend_Server_Method_Callback + */ + +/** + * Zend_Server_Method_Prototype + */ + +/** + * Zend_Server_Method_Parameter + */ + +/** + * Zend_Server_Abstract + * + * @category Zend + * @package Zend_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +abstract class Zend_Server_Abstract implements Zend_Server_Interface +{ + /** + * @deprecated + * @var array List of PHP magic methods (lowercased) + */ + protected static $magic_methods = array( + '__call', + '__clone', + '__construct', + '__destruct', + '__get', + '__isset', + '__set', + '__set_state', + '__sleep', + '__tostring', + '__unset', + '__wakeup', + ); + + /** + * @var bool Flag; whether or not overwriting existing methods is allowed + */ + protected $_overwriteExistingMethods = false; + + /** + * @var Zend_Server_Definition + */ + protected $_table; + + /** + * Constructor + * + * Setup server description + * + * @return void + */ + public function __construct() + { + $this->_table = new Zend_Server_Definition(); + $this->_table->setOverwriteExistingMethods($this->_overwriteExistingMethods); + } + + /** + * Returns a list of registered methods + * + * Returns an array of method definitions. + * + * @return Zend_Server_Definition + */ + public function getFunctions() + { + return $this->_table; + } + + /** + * Lowercase a string + * + * Lowercase's a string by reference + * + * @deprecated + * @param string $string value + * @param string $key + * @return string Lower cased string + */ + public static function lowerCase(&$value, &$key) + { + trigger_error(__CLASS__ . '::' . __METHOD__ . '() is deprecated and will be removed in a future version', E_USER_NOTICE); + return $value = strtolower($value); + } + + /** + * Build callback for method signature + * + * @param Zend_Server_Reflection_Function_Abstract $reflection + * @return Zend_Server_Method_Callback + */ + protected function _buildCallback(Zend_Server_Reflection_Function_Abstract $reflection) + { + $callback = new Zend_Server_Method_Callback(); + if ($reflection instanceof Zend_Server_Reflection_Method) { + $callback->setType($reflection->isStatic() ? 'static' : 'instance') + ->setClass($reflection->getDeclaringClass()->getName()) + ->setMethod($reflection->getName()); + } elseif ($reflection instanceof Zend_Server_Reflection_Function) { + $callback->setType('function') + ->setFunction($reflection->getName()); + } + return $callback; + } + + /** + * Build a method signature + * + * @param Zend_Server_Reflection_Function_Abstract $reflection + * @param null|string|object $class + * @return Zend_Server_Method_Definition + * @throws Zend_Server_Exception on duplicate entry + */ + protected function _buildSignature(Zend_Server_Reflection_Function_Abstract $reflection, $class = null) + { + $ns = $reflection->getNamespace(); + $name = $reflection->getName(); + $method = empty($ns) ? $name : $ns . '.' . $name; + + if (!$this->_overwriteExistingMethods && $this->_table->hasMethod($method)) { + throw new Zend_Server_Exception('Duplicate method registered: ' . $method); + } + + $definition = new Zend_Server_Method_Definition(); + $definition->setName($method) + ->setCallback($this->_buildCallback($reflection)) + ->setMethodHelp($reflection->getDescription()) + ->setInvokeArguments($reflection->getInvokeArguments()); + + foreach ($reflection->getPrototypes() as $proto) { + $prototype = new Zend_Server_Method_Prototype(); + $prototype->setReturnType($this->_fixType($proto->getReturnType())); + foreach ($proto->getParameters() as $parameter) { + $param = new Zend_Server_Method_Parameter(array( + 'type' => $this->_fixType($parameter->getType()), + 'name' => $parameter->getName(), + 'optional' => $parameter->isOptional(), + )); + if ($parameter->isDefaultValueAvailable()) { + $param->setDefaultValue($parameter->getDefaultValue()); + } + $prototype->addParameter($param); + } + $definition->addPrototype($prototype); + } + if (is_object($class)) { + $definition->setObject($class); + } + $this->_table->addMethod($definition); + return $definition; + } + + /** + * Dispatch method + * + * @param Zend_Server_Method_Definition $invocable + * @param array $params + * @return mixed + */ + protected function _dispatch(Zend_Server_Method_Definition $invocable, array $params) + { + $callback = $invocable->getCallback(); + $type = $callback->getType(); + + if ('function' == $type) { + $function = $callback->getFunction(); + return call_user_func_array($function, $params); + } + + $class = $callback->getClass(); + $method = $callback->getMethod(); + + if ('static' == $type) { + return call_user_func_array(array($class, $method), $params); + } + + $object = $invocable->getObject(); + if (!is_object($object)) { + $invokeArgs = $invocable->getInvokeArguments(); + if (!empty($invokeArgs)) { + $reflection = new ReflectionClass($class); + $object = $reflection->newInstanceArgs(array_values($invokeArgs)); + } else { + $object = new $class; + } + } + return call_user_func_array(array($object, $method), $params); + } + + /** + * Map PHP type to protocol type + * + * @param string $type + * @return string + */ + abstract protected function _fixType($type); +} diff --git a/library/vendor/Zend/Server/Cache.php b/library/vendor/Zend/Server/Cache.php new file mode 100644 index 0000000..97264df --- /dev/null +++ b/library/vendor/Zend/Server/Cache.php @@ -0,0 +1,147 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Server_Cache: cache server definitions + * + * @category Zend + * @package Zend_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Server_Cache +{ + /** + * @var array Methods to skip when caching server + */ + protected static $_skipMethods = array(); + + /** + * Cache a file containing the dispatch list. + * + * Serializes the server definition stores the information + * in $filename. + * + * Returns false on any error (typically, inability to write to file), true + * on success. + * + * @param string $filename + * @param Zend_Server_Interface $server + * @return bool + */ + public static function save($filename, Zend_Server_Interface $server) + { + if (!is_string($filename) + || (!file_exists($filename) && !is_writable(dirname($filename)))) + { + return false; + } + + $methods = $server->getFunctions(); + + if ($methods instanceof Zend_Server_Definition) { + $definition = new Zend_Server_Definition(); + foreach ($methods as $method) { + if (in_array($method->getName(), self::$_skipMethods)) { + continue; + } + $definition->addMethod($method); + } + $methods = $definition; + } + + if (0 === @file_put_contents($filename, serialize($methods))) { + return false; + } + + return true; + } + + /** + * Load server definition from a file + * + * Unserializes a stored server definition from $filename. Returns false if + * it fails in any way, true on success. + * + * Useful to prevent needing to build the server definition on each + * request. Sample usage: + * + * <code> + * if (!Zend_Server_Cache::get($filename, $server)) { + * require_once 'Some/Service/Class.php'; + * require_once 'Another/Service/Class.php'; + * + * // Attach Some_Service_Class with namespace 'some' + * $server->attach('Some_Service_Class', 'some'); + * + * // Attach Another_Service_Class with namespace 'another' + * $server->attach('Another_Service_Class', 'another'); + * + * Zend_Server_Cache::save($filename, $server); + * } + * + * $response = $server->handle(); + * echo $response; + * </code> + * + * @param string $filename + * @param Zend_Server_Interface $server + * @return bool + */ + public static function get($filename, Zend_Server_Interface $server) + { + if (!is_string($filename) + || !file_exists($filename) + || !is_readable($filename)) + { + return false; + } + + + if (false === ($dispatch = @file_get_contents($filename))) { + return false; + } + + if (false === ($dispatchArray = @unserialize($dispatch))) { + return false; + } + + $server->loadFunctions($dispatchArray); + + return true; + } + + /** + * Remove a cache file + * + * @param string $filename + * @return boolean + */ + public static function delete($filename) + { + if (is_string($filename) && file_exists($filename)) { + unlink($filename); + return true; + } + + return false; + } +} diff --git a/library/vendor/Zend/Server/Definition.php b/library/vendor/Zend/Server/Definition.php new file mode 100644 index 0000000..fb8d24a --- /dev/null +++ b/library/vendor/Zend/Server/Definition.php @@ -0,0 +1,263 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Server methods metadata + * + * @todo Implement iterator + * @category Zend + * @package Zend_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Server_Definition implements Countable, Iterator +{ + /** + * @var array Array of Zend_Server_Method_Definition objects + */ + protected $_methods = array(); + + /** + * @var bool Whether or not overwriting existing methods is allowed + */ + protected $_overwriteExistingMethods = false; + + /** + * Constructor + * + * @param null|array $methods + * @return void + */ + public function __construct($methods = null) + { + if (is_array($methods)) { + $this->setMethods($methods); + } + } + + /** + * Set flag indicating whether or not overwriting existing methods is allowed + * + * @param mixed $flag + * @return void + */ + public function setOverwriteExistingMethods($flag) + { + $this->_overwriteExistingMethods = (bool) $flag; + return $this; + } + + /** + * Add method to definition + * + * @param array|Zend_Server_Method_Definition $method + * @param null|string $name + * @return Zend_Server_Definition + * @throws Zend_Server_Exception if duplicate or invalid method provided + */ + public function addMethod($method, $name = null) + { + if (is_array($method)) { + $method = new Zend_Server_Method_Definition($method); + } elseif (!$method instanceof Zend_Server_Method_Definition) { + throw new Zend_Server_Exception('Invalid method provided'); + } + + if (is_numeric($name)) { + $name = null; + } + if (null !== $name) { + $method->setName($name); + } else { + $name = $method->getName(); + } + if (null === $name) { + throw new Zend_Server_Exception('No method name provided'); + } + + if (!$this->_overwriteExistingMethods && array_key_exists($name, $this->_methods)) { + throw new Zend_Server_Exception(sprintf('Method by name of "%s" already exists', $name)); + } + $this->_methods[$name] = $method; + return $this; + } + + /** + * Add multiple methods + * + * @param array $methods Array of Zend_Server_Method_Definition objects or arrays + * @return Zend_Server_Definition + */ + public function addMethods(array $methods) + { + foreach ($methods as $key => $method) { + $this->addMethod($method, $key); + } + return $this; + } + + /** + * Set all methods at once (overwrite) + * + * @param array $methods Array of Zend_Server_Method_Definition objects or arrays + * @return Zend_Server_Definition + */ + public function setMethods(array $methods) + { + $this->clearMethods(); + $this->addMethods($methods); + return $this; + } + + /** + * Does the definition have the given method? + * + * @param string $method + * @return bool + */ + public function hasMethod($method) + { + return array_key_exists($method, $this->_methods); + } + + /** + * Get a given method definition + * + * @param string $method + * @return null|Zend_Server_Method_Definition + */ + public function getMethod($method) + { + if ($this->hasMethod($method)) { + return $this->_methods[$method]; + } + return false; + } + + /** + * Get all method definitions + * + * @return array Array of Zend_Server_Method_Definition objects + */ + public function getMethods() + { + return $this->_methods; + } + + /** + * Remove a method definition + * + * @param string $method + * @return Zend_Server_Definition + */ + public function removeMethod($method) + { + if ($this->hasMethod($method)) { + unset($this->_methods[$method]); + } + return $this; + } + + /** + * Clear all method definitions + * + * @return Zend_Server_Definition + */ + public function clearMethods() + { + $this->_methods = array(); + return $this; + } + + /** + * Cast definition to an array + * + * @return array + */ + public function toArray() + { + $methods = array(); + foreach ($this->getMethods() as $key => $method) { + $methods[$key] = $method->toArray(); + } + return $methods; + } + + /** + * Countable: count of methods + * + * @return int + */ + public function count() + { + return count($this->_methods); + } + + /** + * Iterator: current item + * + * @return mixed + */ + public function current() + { + return current($this->_methods); + } + + /** + * Iterator: current item key + * + * @return int|string + */ + public function key() + { + return key($this->_methods); + } + + /** + * Iterator: advance to next method + * + * @return void + */ + public function next() + { + return next($this->_methods); + } + + /** + * Iterator: return to first method + * + * @return void + */ + public function rewind() + { + return reset($this->_methods); + } + + /** + * Iterator: is the current index valid? + * + * @return bool + */ + public function valid() + { + return (bool) $this->current(); + } +} diff --git a/library/vendor/Zend/Server/Exception.php b/library/vendor/Zend/Server/Exception.php new file mode 100644 index 0000000..c3b9c9f --- /dev/null +++ b/library/vendor/Zend/Server/Exception.php @@ -0,0 +1,34 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Exception + */ + +/** + * Zend_Server_Reflection exceptions + * + * @package Zend_Server + * @subpackage Reflection + * @version $Id$ + */ +class Zend_Server_Exception extends Zend_Exception +{ +} diff --git a/library/vendor/Zend/Server/Interface.php b/library/vendor/Zend/Server/Interface.php new file mode 100644 index 0000000..cc60bc5 --- /dev/null +++ b/library/vendor/Zend/Server/Interface.php @@ -0,0 +1,118 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Server_Interface + * + * @category Zend + * @package Zend_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +interface Zend_Server_Interface +{ + /** + * Attach a function as a server method + * + * Namespacing is primarily for xmlrpc, but may be used with other + * implementations to prevent naming collisions. + * + * @param string $function + * @param string $namespace + * @param null|array Optional array of arguments to pass to callbacks at + * dispatch. + * @return void + */ + public function addFunction($function, $namespace = ''); + + /** + * Attach a class to a server + * + * The individual implementations should probably allow passing a variable + * number of arguments in, so that developers may define custom runtime + * arguments to pass to server methods. + * + * Namespacing is primarily for xmlrpc, but could be used for other + * implementations as well. + * + * @param mixed $class Class name or object instance to examine and attach + * to the server. + * @param string $namespace Optional namespace with which to prepend method + * names in the dispatch table. + * methods in the class will be valid callbacks. + * @param null|array Optional array of arguments to pass to callbacks at + * dispatch. + * @return void + */ + public function setClass($class, $namespace = '', $argv = null); + + /** + * Generate a server fault + * + * @param mixed $fault + * @param int $code + * @return mixed + */ + public function fault($fault = null, $code = 404); + + /** + * Handle a request + * + * Requests may be passed in, or the server may automagically determine the + * request based on defaults. Dispatches server request to appropriate + * method and returns a response + * + * @param mixed $request + * @return mixed + */ + public function handle($request = false); + + /** + * Return a server definition array + * + * Returns a server definition array as created using + * {@link * Zend_Server_Reflection}. Can be used for server introspection, + * documentation, or persistence. + * + * @access public + * @return array + */ + public function getFunctions(); + + /** + * Load server definition + * + * Used for persistence; loads a construct as returned by {@link getFunctions()}. + * + * @param array $array + * @return void + */ + public function loadFunctions($definition); + + /** + * Set server persistence + * + * @todo Determine how to implement this + * @param int $mode + * @return void + */ + public function setPersistence($mode); +} diff --git a/library/vendor/Zend/Server/Method/Callback.php b/library/vendor/Zend/Server/Method/Callback.php new file mode 100644 index 0000000..3f81197 --- /dev/null +++ b/library/vendor/Zend/Server/Method/Callback.php @@ -0,0 +1,204 @@ +<?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_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Method callback metadata + * + * @category Zend + * @package Zend_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Server_Method_Callback +{ + /** + * @var string Class name for class method callback + */ + protected $_class; + + /** + * @var string Function name for function callback + */ + protected $_function; + + /** + * @var string Method name for class method callback + */ + protected $_method; + + /** + * @var string Callback type + */ + protected $_type; + + /** + * @var array Valid callback types + */ + protected $_types = array('function', 'static', 'instance'); + + /** + * Constructor + * + * @param null|array $options + * @return void + */ + public function __construct($options = null) + { + if ((null !== $options) && is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set object state from array of options + * + * @param array $options + * @return Zend_Server_Method_Callback + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + return $this; + } + + /** + * Set callback class + * + * @param string $class + * @return Zend_Server_Method_Callback + */ + public function setClass($class) + { + if (is_object($class)) { + $class = get_class($class); + } + $this->_class = $class; + return $this; + } + + /** + * Get callback class + * + * @return string|null + */ + public function getClass() + { + return $this->_class; + } + + /** + * Set callback function + * + * @param string $function + * @return Zend_Server_Method_Callback + */ + public function setFunction($function) + { + $this->_function = (string) $function; + $this->setType('function'); + return $this; + } + + /** + * Get callback function + * + * @return null|string + */ + public function getFunction() + { + return $this->_function; + } + + /** + * Set callback class method + * + * @param string $method + * @return Zend_Server_Method_Callback + */ + public function setMethod($method) + { + $this->_method = $method; + return $this; + } + + /** + * Get callback class method + * + * @return null|string + */ + public function getMethod() + { + return $this->_method; + } + + /** + * Set callback type + * + * @param string $type + * @return Zend_Server_Method_Callback + * @throws Zend_Server_Exception + */ + public function setType($type) + { + if (!in_array($type, $this->_types)) { + throw new Zend_Server_Exception('Invalid method callback type passed to ' . __CLASS__ . '::' . __METHOD__); + } + $this->_type = $type; + return $this; + } + + /** + * Get callback type + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * Cast callback to array + * + * @return array + */ + public function toArray() + { + $type = $this->getType(); + $array = array( + 'type' => $type, + ); + if ('function' == $type) { + $array['function'] = $this->getFunction(); + } else { + $array['class'] = $this->getClass(); + $array['method'] = $this->getMethod(); + } + return $array; + } +} diff --git a/library/vendor/Zend/Server/Method/Definition.php b/library/vendor/Zend/Server/Method/Definition.php new file mode 100644 index 0000000..5635ae6 --- /dev/null +++ b/library/vendor/Zend/Server/Method/Definition.php @@ -0,0 +1,288 @@ +<?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_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Method definition metadata + * + * @category Zend + * @package Zend_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Server_Method_Definition +{ + /** + * @var Zend_Server_Method_Callback + */ + protected $_callback; + + /** + * @var array + */ + protected $_invokeArguments = array(); + + /** + * @var string + */ + protected $_methodHelp = ''; + + /** + * @var string + */ + protected $_name; + + /** + * @var null|object + */ + protected $_object; + + /** + * @var array Array of Zend_Server_Method_Prototype objects + */ + protected $_prototypes = array(); + + /** + * Constructor + * + * @param null|array $options + * @return void + */ + public function __construct($options = null) + { + if ((null !== $options) && is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set object state from options + * + * @param array $options + * @return Zend_Server_Method_Definition + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + return $this; + } + + /** + * Set method name + * + * @param string $name + * @return Zend_Server_Method_Definition + */ + public function setName($name) + { + $this->_name = (string) $name; + return $this; + } + + /** + * Get method name + * + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Set method callback + * + * @param array|Zend_Server_Method_Callback $callback + * @return Zend_Server_Method_Definition + */ + public function setCallback($callback) + { + if (is_array($callback)) { + $callback = new Zend_Server_Method_Callback($callback); + } elseif (!$callback instanceof Zend_Server_Method_Callback) { + throw new Zend_Server_Exception('Invalid method callback provided'); + } + $this->_callback = $callback; + return $this; + } + + /** + * Get method callback + * + * @return Zend_Server_Method_Callback + */ + public function getCallback() + { + return $this->_callback; + } + + /** + * Add prototype to method definition + * + * @param array|Zend_Server_Method_Prototype $prototype + * @return Zend_Server_Method_Definition + */ + public function addPrototype($prototype) + { + if (is_array($prototype)) { + $prototype = new Zend_Server_Method_Prototype($prototype); + } elseif (!$prototype instanceof Zend_Server_Method_Prototype) { + throw new Zend_Server_Exception('Invalid method prototype provided'); + } + $this->_prototypes[] = $prototype; + return $this; + } + + /** + * Add multiple prototypes at once + * + * @param array $prototypes Array of Zend_Server_Method_Prototype objects or arrays + * @return Zend_Server_Method_Definition + */ + public function addPrototypes(array $prototypes) + { + foreach ($prototypes as $prototype) { + $this->addPrototype($prototype); + } + return $this; + } + + /** + * Set all prototypes at once (overwrites) + * + * @param array $prototypes Array of Zend_Server_Method_Prototype objects or arrays + * @return Zend_Server_Method_Definition + */ + public function setPrototypes(array $prototypes) + { + $this->_prototypes = array(); + $this->addPrototypes($prototypes); + return $this; + } + + /** + * Get all prototypes + * + * @return array $prototypes Array of Zend_Server_Method_Prototype objects or arrays + */ + public function getPrototypes() + { + return $this->_prototypes; + } + + /** + * Set method help + * + * @param string $methodHelp + * @return Zend_Server_Method_Definition + */ + public function setMethodHelp($methodHelp) + { + $this->_methodHelp = (string) $methodHelp; + return $this; + } + + /** + * Get method help + * + * @return string + */ + public function getMethodHelp() + { + return $this->_methodHelp; + } + + /** + * Set object to use with method calls + * + * @param object $object + * @return Zend_Server_Method_Definition + */ + public function setObject($object) + { + if (!is_object($object) && (null !== $object)) { + throw new Zend_Server_Exception('Invalid object passed to ' . __CLASS__ . '::' . __METHOD__); + } + $this->_object = $object; + return $this; + } + + /** + * Get object to use with method calls + * + * @return null|object + */ + public function getObject() + { + return $this->_object; + } + + /** + * Set invoke arguments + * + * @param array $invokeArguments + * @return Zend_Server_Method_Definition + */ + public function setInvokeArguments(array $invokeArguments) + { + $this->_invokeArguments = $invokeArguments; + return $this; + } + + /** + * Retrieve invoke arguments + * + * @return array + */ + public function getInvokeArguments() + { + return $this->_invokeArguments; + } + + /** + * Serialize to array + * + * @return array + */ + public function toArray() + { + $prototypes = $this->getPrototypes(); + $signatures = array(); + foreach ($prototypes as $prototype) { + $signatures[] = $prototype->toArray(); + } + + return array( + 'name' => $this->getName(), + 'callback' => $this->getCallback()->toArray(), + 'prototypes' => $signatures, + 'methodHelp' => $this->getMethodHelp(), + 'invokeArguments' => $this->getInvokeArguments(), + 'object' => $this->getObject(), + ); + } +} diff --git a/library/vendor/Zend/Server/Method/Parameter.php b/library/vendor/Zend/Server/Method/Parameter.php new file mode 100644 index 0000000..63e14a4 --- /dev/null +++ b/library/vendor/Zend/Server/Method/Parameter.php @@ -0,0 +1,214 @@ +<?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_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Method parameter metadata + * + * @category Zend + * @package Zend_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Server_Method_Parameter +{ + /** + * @var mixed Default parameter value + */ + protected $_defaultValue; + + /** + * @var string Parameter description + */ + protected $_description = ''; + + /** + * @var string Parameter variable name + */ + protected $_name; + + /** + * @var bool Is parameter optional? + */ + protected $_optional = false; + + /** + * @var string Parameter type + */ + protected $_type = 'mixed'; + + /** + * Constructor + * + * @param null|array $options + * @return void + */ + public function __construct($options = null) + { + if (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set object state from array of options + * + * @param array $options + * @return Zend_Server_Method_Parameter + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + return $this; + } + + /** + * Set default value + * + * @param mixed $defaultValue + * @return Zend_Server_Method_Parameter + */ + public function setDefaultValue($defaultValue) + { + $this->_defaultValue = $defaultValue; + return $this; + } + + /** + * Retrieve default value + * + * @return mixed + */ + public function getDefaultValue() + { + return $this->_defaultValue; + } + + /** + * Set description + * + * @param string $description + * @return Zend_Server_Method_Parameter + */ + public function setDescription($description) + { + $this->_description = (string) $description; + return $this; + } + + /** + * Retrieve description + * + * @return string + */ + public function getDescription() + { + return $this->_description; + } + + /** + * Set name + * + * @param string $name + * @return Zend_Server_Method_Parameter + */ + public function setName($name) + { + $this->_name = (string) $name; + return $this; + } + + /** + * Retrieve name + * + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Set optional flag + * + * @param bool $flag + * @return Zend_Server_Method_Parameter + */ + public function setOptional($flag) + { + $this->_optional = (bool) $flag; + return $this; + } + + /** + * Is the parameter optional? + * + * @return bool + */ + public function isOptional() + { + return $this->_optional; + } + + /** + * Set parameter type + * + * @param string $type + * @return Zend_Server_Method_Parameter + */ + public function setType($type) + { + $this->_type = (string) $type; + return $this; + } + + /** + * Retrieve parameter type + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * Cast to array + * + * @return array + */ + public function toArray() + { + return array( + 'type' => $this->getType(), + 'name' => $this->getName(), + 'optional' => $this->isOptional(), + 'defaultValue' => $this->getDefaultValue(), + 'description' => $this->getDescription(), + ); + } +} diff --git a/library/vendor/Zend/Server/Method/Prototype.php b/library/vendor/Zend/Server/Method/Prototype.php new file mode 100644 index 0000000..33c5a14 --- /dev/null +++ b/library/vendor/Zend/Server/Method/Prototype.php @@ -0,0 +1,207 @@ +<?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_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Method prototype metadata + * + * @category Zend + * @package Zend_Server + * @subpackage Method + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Server_Method_Prototype +{ + /** + * @var string Return type + */ + protected $_returnType = 'void'; + + /** + * @var array Map parameter names to parameter index + */ + protected $_parameterNameMap = array(); + + /** + * @var array Method parameters + */ + protected $_parameters = array(); + + /** + * Constructor + * + * @param null|array $options + * @return void + */ + public function __construct($options = null) + { + if ((null !== $options) && is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set return value + * + * @param string $returnType + * @return Zend_Server_Method_Prototype + */ + public function setReturnType($returnType) + { + $this->_returnType = $returnType; + return $this; + } + + /** + * Retrieve return type + * + * @return string + */ + public function getReturnType() + { + return $this->_returnType; + } + + /** + * Add a parameter + * + * @param string $parameter + * @return Zend_Server_Method_Prototype + */ + public function addParameter($parameter) + { + if ($parameter instanceof Zend_Server_Method_Parameter) { + $this->_parameters[] = $parameter; + if (null !== ($name = $parameter->getName())) { + $this->_parameterNameMap[$name] = count($this->_parameters) - 1; + } + } else { + $parameter = new Zend_Server_Method_Parameter(array( + 'type' => (string) $parameter, + )); + $this->_parameters[] = $parameter; + } + return $this; + } + + /** + * Add parameters + * + * @param array $parameter + * @return Zend_Server_Method_Prototype + */ + public function addParameters(array $parameters) + { + foreach ($parameters as $parameter) { + $this->addParameter($parameter); + } + return $this; + } + + /** + * Set parameters + * + * @param array $parameters + * @return Zend_Server_Method_Prototype + */ + public function setParameters(array $parameters) + { + $this->_parameters = array(); + $this->_parameterNameMap = array(); + $this->addParameters($parameters); + return $this; + } + + /** + * Retrieve parameters as list of types + * + * @return array + */ + public function getParameters() + { + $types = array(); + foreach ($this->_parameters as $parameter) { + $types[] = $parameter->getType(); + } + return $types; + } + + /** + * Get parameter objects + * + * @return array + */ + public function getParameterObjects() + { + return $this->_parameters; + } + + /** + * Retrieve a single parameter by name or index + * + * @param string|int $index + * @return null|Zend_Server_Method_Parameter + */ + public function getParameter($index) + { + if (!is_string($index) && !is_numeric($index)) { + return null; + } + if (array_key_exists($index, $this->_parameterNameMap)) { + $index = $this->_parameterNameMap[$index]; + } + if (array_key_exists($index, $this->_parameters)) { + return $this->_parameters[$index]; + } + return null; + } + + /** + * Set object state from array + * + * @param array $options + * @return Zend_Server_Method_Prototype + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + return $this; + } + + /** + * Serialize to array + * + * @return array + */ + public function toArray() + { + return array( + 'returnType' => $this->getReturnType(), + 'parameters' => $this->getParameters(), + ); + } +} diff --git a/library/vendor/Zend/Server/Reflection.php b/library/vendor/Zend/Server/Reflection.php new file mode 100644 index 0000000..5d95c64 --- /dev/null +++ b/library/vendor/Zend/Server/Reflection.php @@ -0,0 +1,105 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Server_Reflection_Function + */ + +/** + * Zend_Server_Reflection_Class + */ + +/** + * Reflection for determining method signatures to use with server classes + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection +{ + /** + * Perform class reflection to create dispatch signatures + * + * Creates a {@link Zend_Server_Reflection_Class} object for the class or + * object provided. + * + * If extra arguments should be passed to dispatchable methods, these may + * be provided as an array to $argv. + * + * @param string|object $class Class name or object + * @param null|array $argv Optional arguments to be used during the method call + * @param string $namespace Optional namespace with which to prefix the + * method name (used for the signature key). Primarily to avoid collisions, + * also for XmlRpc namespacing + * @return Zend_Server_Reflection_Class + * @throws Zend_Server_Reflection_Exception + */ + public static function reflectClass($class, $argv = false, $namespace = '') + { + if (is_object($class)) { + $reflection = new ReflectionObject($class); + } elseif (class_exists($class)) { + $reflection = new ReflectionClass($class); + } else { + throw new Zend_Server_Reflection_Exception('Invalid class or object passed to attachClass()'); + } + + if ($argv && !is_array($argv)) { + throw new Zend_Server_Reflection_Exception('Invalid argv argument passed to reflectClass'); + } + + return new Zend_Server_Reflection_Class($reflection, $namespace, $argv); + } + + /** + * Perform function reflection to create dispatch signatures + * + * Creates dispatch prototypes for a function. It returns a + * {@link Zend_Server_Reflection_Function} object. + * + * If extra arguments should be passed to the dispatchable function, these + * may be provided as an array to $argv. + * + * @param string $function Function name + * @param null|array $argv Optional arguments to be used during the method call + * @param string $namespace Optional namespace with which to prefix the + * function name (used for the signature key). Primarily to avoid + * collisions, also for XmlRpc namespacing + * @return Zend_Server_Reflection_Function + * @throws Zend_Server_Reflection_Exception + */ + public static function reflectFunction($function, $argv = false, $namespace = '') + { + if (!is_string($function) || !function_exists($function)) { + throw new Zend_Server_Reflection_Exception('Invalid function "' . $function . '" passed to reflectFunction'); + } + + + if ($argv && !is_array($argv)) { + throw new Zend_Server_Reflection_Exception('Invalid argv argument passed to reflectClass'); + } + + return new Zend_Server_Reflection_Function(new ReflectionFunction($function), $namespace, $argv); + } +} diff --git a/library/vendor/Zend/Server/Reflection/Class.php b/library/vendor/Zend/Server/Reflection/Class.php new file mode 100644 index 0000000..9456f0a --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Class.php @@ -0,0 +1,195 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Server_Reflection_Method + */ + +/** + * Class/Object reflection + * + * Proxies calls to a ReflectionClass object, and decorates getMethods() by + * creating its own list of {@link Zend_Server_Reflection_Method}s. + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection_Class +{ + /** + * Optional configuration parameters; accessible via {@link __get} and + * {@link __set()} + * @var array + */ + protected $_config = array(); + + /** + * Array of {@link Zend_Server_Reflection_Method}s + * @var array + */ + protected $_methods = array(); + + /** + * Namespace + * @var string + */ + protected $_namespace = null; + + /** + * ReflectionClass object + * @var ReflectionClass + */ + protected $_reflection; + + /** + * Constructor + * + * Create array of dispatchable methods, each a + * {@link Zend_Server_Reflection_Method}. Sets reflection object property. + * + * @param ReflectionClass $reflection + * @param string $namespace + * @param mixed $argv + * @return void + */ + public function __construct(ReflectionClass $reflection, $namespace = null, $argv = false) + { + $this->_reflection = $reflection; + $this->setNamespace($namespace); + + foreach ($reflection->getMethods() as $method) { + // Don't aggregate magic methods + if ('__' == substr($method->getName(), 0, 2)) { + continue; + } + + if ($method->isPublic()) { + // Get signatures and description + $this->_methods[] = new Zend_Server_Reflection_Method($this, $method, $this->getNamespace(), $argv); + } + } + } + + /** + * Proxy reflection calls + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + if (method_exists($this->_reflection, $method)) { + return call_user_func_array(array($this->_reflection, $method), $args); + } + + throw new Zend_Server_Reflection_Exception('Invalid reflection method'); + } + + /** + * Retrieve configuration parameters + * + * Values are retrieved by key from {@link $_config}. Returns null if no + * value found. + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + if (isset($this->_config[$key])) { + return $this->_config[$key]; + } + + return null; + } + + /** + * Set configuration parameters + * + * Values are stored by $key in {@link $_config}. + * + * @param string $key + * @param mixed $value + * @return void + */ + public function __set($key, $value) + { + $this->_config[$key] = $value; + } + + /** + * Return array of dispatchable {@link Zend_Server_Reflection_Method}s. + * + * @access public + * @return array + */ + public function getMethods() + { + return $this->_methods; + } + + /** + * Get namespace for this class + * + * @return string + */ + public function getNamespace() + { + return $this->_namespace; + } + + /** + * Set namespace for this class + * + * @param string $namespace + * @return void + */ + public function setNamespace($namespace) + { + if (empty($namespace)) { + $this->_namespace = ''; + return; + } + + if (!is_string($namespace) || !preg_match('/[a-z0-9_\.]+/i', $namespace)) { + throw new Zend_Server_Reflection_Exception('Invalid namespace'); + } + + $this->_namespace = $namespace; + } + + /** + * Wakeup from serialization + * + * Reflection needs explicit instantiation to work correctly. Re-instantiate + * reflection object on wakeup. + * + * @return void + */ + public function __wakeup() + { + $this->_reflection = new ReflectionClass($this->getName()); + } +} diff --git a/library/vendor/Zend/Server/Reflection/Exception.php b/library/vendor/Zend/Server/Reflection/Exception.php new file mode 100644 index 0000000..e264768 --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Exception.php @@ -0,0 +1,37 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * @see Zend_Server_Exception + */ + +/** + * Zend_Server_Reflection exceptions + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection_Exception extends Zend_Server_Exception +{ +} diff --git a/library/vendor/Zend/Server/Reflection/Function.php b/library/vendor/Zend/Server/Reflection/Function.php new file mode 100644 index 0000000..cd76afa --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Function.php @@ -0,0 +1,38 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Server_Reflection_Function_Abstract + */ + +/** + * Function Reflection + * + * @uses Zend_Server_Reflection_Function_Abstract + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection_Function extends Zend_Server_Reflection_Function_Abstract +{ +} diff --git a/library/vendor/Zend/Server/Reflection/Function/Abstract.php b/library/vendor/Zend/Server/Reflection/Function/Abstract.php new file mode 100644 index 0000000..f0557f8 --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Function/Abstract.php @@ -0,0 +1,506 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Server_Reflection_Node + */ + +/** + * Zend_Server_Reflection_Parameter + */ + +/** + * Zend_Server_Reflection_Prototype + */ + +/** + * Function/Method Reflection + * + * Decorates a ReflectionFunction. Allows setting and retrieving an alternate + * 'service' name (i.e., the name to be used when calling via a service), + * setting and retrieving the description (originally set using the docblock + * contents), retrieving the callback and callback type, retrieving additional + * method invocation arguments, and retrieving the + * method {@link Zend_Server_Reflection_Prototype prototypes}. + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +abstract class Zend_Server_Reflection_Function_Abstract +{ + /** + * @var ReflectionFunction + */ + protected $_reflection; + + /** + * Additional arguments to pass to method on invocation + * @var array + */ + protected $_argv = array(); + + /** + * Used to store extra configuration for the method (typically done by the + * server class, e.g., to indicate whether or not to instantiate a class). + * Associative array; access is as properties via {@link __get()} and + * {@link __set()} + * @var array + */ + protected $_config = array(); + + /** + * Declaring class (needed for when serialization occurs) + * @var string + */ + protected $_class; + + /** + * Function/method description + * @var string + */ + protected $_description = ''; + + /** + * Namespace with which to prefix function/method name + * @var string + */ + protected $_namespace; + + /** + * Prototypes + * @var array + */ + protected $_prototypes = array(); + + private $_return; + private $_returnDesc; + private $_paramDesc; + private $_sigParams; + private $_sigParamsDepth; + + /** + * Constructor + * + * @param ReflectionFunction $r + */ + public function __construct(Reflector $r, $namespace = null, $argv = array()) + { + // In PHP 5.1.x, ReflectionMethod extends ReflectionFunction. In 5.2.x, + // both extend ReflectionFunctionAbstract. So, we can't do normal type + // hinting in the prototype, but instead need to do some explicit + // testing here. + if ((!$r instanceof ReflectionFunction) + && (!$r instanceof ReflectionMethod)) { + throw new Zend_Server_Reflection_Exception('Invalid reflection class'); + } + $this->_reflection = $r; + + // Determine namespace + if (null !== $namespace){ + $this->setNamespace($namespace); + } + + // Determine arguments + if (is_array($argv)) { + $this->_argv = $argv; + } + + // If method call, need to store some info on the class + if ($r instanceof ReflectionMethod) { + $this->_class = $r->getDeclaringClass()->getName(); + } + + // Perform some introspection + $this->_reflect(); + } + + /** + * Create signature node tree + * + * Recursive method to build the signature node tree. Increments through + * each array in {@link $_sigParams}, adding every value of the next level + * to the current value (unless the current value is null). + * + * @param Zend_Server_Reflection_Node $parent + * @param int $level + * @return void + */ + protected function _addTree(Zend_Server_Reflection_Node $parent, $level = 0) + { + if ($level >= $this->_sigParamsDepth) { + return; + } + + foreach ($this->_sigParams[$level] as $value) { + $node = new Zend_Server_Reflection_Node($value, $parent); + if ((null !== $value) && ($this->_sigParamsDepth > $level + 1)) { + $this->_addTree($node, $level + 1); + } + } + } + + /** + * Build the signature tree + * + * Builds a signature tree starting at the return values and descending + * through each method argument. Returns an array of + * {@link Zend_Server_Reflection_Node}s. + * + * @return array + */ + protected function _buildTree() + { + $returnTree = array(); + foreach ((array) $this->_return as $value) { + $node = new Zend_Server_Reflection_Node($value); + $this->_addTree($node); + $returnTree[] = $node; + } + + return $returnTree; + } + + /** + * Build method signatures + * + * Builds method signatures using the array of return types and the array of + * parameters types + * + * @param array $return Array of return types + * @param string $returnDesc Return value description + * @param array $params Array of arguments (each an array of types) + * @param array $paramDesc Array of parameter descriptions + * @return array + */ + protected function _buildSignatures($return, $returnDesc, $paramTypes, $paramDesc) + { + $this->_return = $return; + $this->_returnDesc = $returnDesc; + $this->_paramDesc = $paramDesc; + $this->_sigParams = $paramTypes; + $this->_sigParamsDepth = count($paramTypes); + $signatureTrees = $this->_buildTree(); + $signatures = array(); + + $endPoints = array(); + foreach ($signatureTrees as $root) { + $tmp = $root->getEndPoints(); + if (empty($tmp)) { + $endPoints = array_merge($endPoints, array($root)); + } else { + $endPoints = array_merge($endPoints, $tmp); + } + } + + foreach ($endPoints as $node) { + if (!$node instanceof Zend_Server_Reflection_Node) { + continue; + } + + $signature = array(); + do { + array_unshift($signature, $node->getValue()); + $node = $node->getParent(); + } while ($node instanceof Zend_Server_Reflection_Node); + + $signatures[] = $signature; + } + + // Build prototypes + $params = $this->_reflection->getParameters(); + foreach ($signatures as $signature) { + $return = new Zend_Server_Reflection_ReturnValue(array_shift($signature), $this->_returnDesc); + $tmp = array(); + foreach ($signature as $key => $type) { + $param = new Zend_Server_Reflection_Parameter($params[$key], $type, (isset($this->_paramDesc[$key]) ? $this->_paramDesc[$key] : null)); + $param->setPosition($key); + $tmp[] = $param; + } + + $this->_prototypes[] = new Zend_Server_Reflection_Prototype($return, $tmp); + } + } + + /** + * Use code reflection to create method signatures + * + * Determines the method help/description text from the function DocBlock + * comment. Determines method signatures using a combination of + * ReflectionFunction and parsing of DocBlock @param and @return values. + * + * @param ReflectionFunction $function + * @return array + */ + protected function _reflect() + { + $function = $this->_reflection; + $helpText = ''; + $signatures = array(); + $returnDesc = ''; + $paramCount = $function->getNumberOfParameters(); + $paramCountRequired = $function->getNumberOfRequiredParameters(); + $parameters = $function->getParameters(); + $docBlock = $function->getDocComment(); + + if (!empty($docBlock)) { + // Get help text + if (preg_match(':/\*\*\s*\r?\n\s*\*\s(.*?)\r?\n\s*\*(\s@|/):s', $docBlock, $matches)) + { + $helpText = $matches[1]; + $helpText = preg_replace('/(^\s*\*\s)/m', '', $helpText); + $helpText = preg_replace('/\r?\n\s*\*\s*(\r?\n)*/s', "\n", $helpText); + $helpText = trim($helpText); + } + + // Get return type(s) and description + $return = 'void'; + if (preg_match('/@return\s+(\S+)/', $docBlock, $matches)) { + $return = explode('|', $matches[1]); + if (preg_match('/@return\s+\S+\s+(.*?)(@|\*\/)/s', $docBlock, $matches)) + { + $value = $matches[1]; + $value = preg_replace('/\s?\*\s/m', '', $value); + $value = preg_replace('/\s{2,}/', ' ', $value); + $returnDesc = trim($value); + } + } + + // Get param types and description + if (preg_match_all('/@param\s+([^\s]+)/m', $docBlock, $matches)) { + $paramTypesTmp = $matches[1]; + if (preg_match_all('/@param\s+\S+\s+(\$\S+)\s+(.*?)(?=@|\*\/)/s', $docBlock, $matches)) + { + $paramDesc = $matches[2]; + foreach ($paramDesc as $key => $value) { + $value = preg_replace('/\s?\*\s/m', '', $value); + $value = preg_replace('/\s{2,}/', ' ', $value); + $paramDesc[$key] = trim($value); + } + } + } + } else { + $helpText = $function->getName(); + $return = 'void'; + + // Try and auto-determine type, based on reflection + $paramTypesTmp = array(); + foreach ($parameters as $i => $param) { + $paramType = 'mixed'; + if ($param->isArray()) { + $paramType = 'array'; + } + $paramTypesTmp[$i] = $paramType; + } + } + + // Set method description + $this->setDescription($helpText); + + // Get all param types as arrays + if (!isset($paramTypesTmp) && (0 < $paramCount)) { + $paramTypesTmp = array_fill(0, $paramCount, 'mixed'); + } elseif (!isset($paramTypesTmp)) { + $paramTypesTmp = array(); + } elseif (count($paramTypesTmp) < $paramCount) { + $start = $paramCount - count($paramTypesTmp); + for ($i = $start; $i < $paramCount; ++$i) { + $paramTypesTmp[$i] = 'mixed'; + } + } + + // Get all param descriptions as arrays + if (!isset($paramDesc) && (0 < $paramCount)) { + $paramDesc = array_fill(0, $paramCount, ''); + } elseif (!isset($paramDesc)) { + $paramDesc = array(); + } elseif (count($paramDesc) < $paramCount) { + $start = $paramCount - count($paramDesc); + for ($i = $start; $i < $paramCount; ++$i) { + $paramDesc[$i] = ''; + } + } + + if (count($paramTypesTmp) != $paramCount) { + throw new Zend_Server_Reflection_Exception( + 'Variable number of arguments is not supported for services (except optional parameters). ' + . 'Number of function arguments in ' . $function->getDeclaringClass()->getName() . '::' + . $function->getName() . '() must correspond to actual number of arguments described in the ' + . 'docblock.'); + } + + $paramTypes = array(); + foreach ($paramTypesTmp as $i => $param) { + $tmp = explode('|', $param); + if ($parameters[$i]->isOptional()) { + array_unshift($tmp, null); + } + $paramTypes[] = $tmp; + } + + $this->_buildSignatures($return, $returnDesc, $paramTypes, $paramDesc); + } + + + /** + * Proxy reflection calls + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + if (method_exists($this->_reflection, $method)) { + return call_user_func_array(array($this->_reflection, $method), $args); + } + + throw new Zend_Server_Reflection_Exception('Invalid reflection method ("' .$method. '")'); + } + + /** + * Retrieve configuration parameters + * + * Values are retrieved by key from {@link $_config}. Returns null if no + * value found. + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + if (isset($this->_config[$key])) { + return $this->_config[$key]; + } + + return null; + } + + /** + * Set configuration parameters + * + * Values are stored by $key in {@link $_config}. + * + * @param string $key + * @param mixed $value + * @return void + */ + public function __set($key, $value) + { + $this->_config[$key] = $value; + } + + /** + * Set method's namespace + * + * @param string $namespace + * @return void + */ + public function setNamespace($namespace) + { + if (empty($namespace)) { + $this->_namespace = ''; + return; + } + + if (!is_string($namespace) || !preg_match('/[a-z0-9_\.]+/i', $namespace)) { + throw new Zend_Server_Reflection_Exception('Invalid namespace'); + } + + $this->_namespace = $namespace; + } + + /** + * Return method's namespace + * + * @return string + */ + public function getNamespace() + { + return $this->_namespace; + } + + /** + * Set the description + * + * @param string $string + * @return void + */ + public function setDescription($string) + { + if (!is_string($string)) { + throw new Zend_Server_Reflection_Exception('Invalid description'); + } + + $this->_description = $string; + } + + /** + * Retrieve the description + * + * @return void + */ + public function getDescription() + { + return $this->_description; + } + + /** + * Retrieve all prototypes as array of + * {@link Zend_Server_Reflection_Prototype Zend_Server_Reflection_Prototypes} + * + * @return array + */ + public function getPrototypes() + { + return $this->_prototypes; + } + + /** + * Retrieve additional invocation arguments + * + * @return array + */ + public function getInvokeArguments() + { + return $this->_argv; + } + + /** + * Wakeup from serialization + * + * Reflection needs explicit instantiation to work correctly. Re-instantiate + * reflection object on wakeup. + * + * @return void + */ + public function __wakeup() + { + if ($this->_reflection instanceof ReflectionMethod) { + $class = new ReflectionClass($this->_class); + $this->_reflection = new ReflectionMethod($class->newInstance(), $this->getName()); + } else { + $this->_reflection = new ReflectionFunction($this->getName()); + } + } +} diff --git a/library/vendor/Zend/Server/Reflection/Method.php b/library/vendor/Zend/Server/Reflection/Method.php new file mode 100644 index 0000000..305b783 --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Method.php @@ -0,0 +1,109 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Server_Reflection_Function_Abstract + */ + +/** + * Method Reflection + * + * @uses Zend_Server_Reflection_Function_Abstract + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection_Method extends Zend_Server_Reflection_Function_Abstract +{ + /** + * Parent class name + * @var string + */ + protected $_class; + + /** + * Parent class reflection + * @var Zend_Server_Reflection_Class + */ + protected $_classReflection; + + /** + * Constructor + * + * @param Zend_Server_Reflection_Class $class + * @param ReflectionMethod $r + * @param string $namespace + * @param array $argv + * @return void + */ + public function __construct(Zend_Server_Reflection_Class $class, ReflectionMethod $r, $namespace = null, $argv = array()) + { + $this->_classReflection = $class; + $this->_reflection = $r; + + $classNamespace = $class->getNamespace(); + + // Determine namespace + if (!empty($namespace)) { + $this->setNamespace($namespace); + } elseif (!empty($classNamespace)) { + $this->setNamespace($classNamespace); + } + + // Determine arguments + if (is_array($argv)) { + $this->_argv = $argv; + } + + // If method call, need to store some info on the class + $this->_class = $class->getName(); + + // Perform some introspection + $this->_reflect(); + } + + /** + * Return the reflection for the class that defines this method + * + * @return Zend_Server_Reflection_Class + */ + public function getDeclaringClass() + { + return $this->_classReflection; + } + + /** + * Wakeup from serialization + * + * Reflection needs explicit instantiation to work correctly. Re-instantiate + * reflection object on wakeup. + * + * @return void + */ + public function __wakeup() + { + $this->_classReflection = new Zend_Server_Reflection_Class(new ReflectionClass($this->_class), $this->getNamespace(), $this->getInvokeArguments()); + $this->_reflection = new ReflectionMethod($this->_classReflection->getName(), $this->getName()); + } + +} diff --git a/library/vendor/Zend/Server/Reflection/Node.php b/library/vendor/Zend/Server/Reflection/Node.php new file mode 100644 index 0000000..d80abf3 --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Node.php @@ -0,0 +1,201 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Node Tree class for Zend_Server reflection operations + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @version $Id$ + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Server_Reflection_Node +{ + /** + * Node value + * @var mixed + */ + protected $_value = null; + + /** + * Array of child nodes (if any) + * @var array + */ + protected $_children = array(); + + /** + * Parent node (if any) + * @var Zend_Server_Reflection_Node + */ + protected $_parent = null; + + /** + * Constructor + * + * @param mixed $value + * @param Zend_Server_Reflection_Node $parent Optional + * @return Zend_Server_Reflection_Node + */ + public function __construct($value, Zend_Server_Reflection_Node $parent = null) + { + $this->_value = $value; + if (null !== $parent) { + $this->setParent($parent, true); + } + + return $this; + } + + /** + * Set parent node + * + * @param Zend_Server_Reflection_Node $node + * @param boolean $new Whether or not the child node is newly created + * and should always be attached + * @return void + */ + public function setParent(Zend_Server_Reflection_Node $node, $new = false) + { + $this->_parent = $node; + + if ($new) { + $node->attachChild($this); + return; + } + } + + /** + * Create and attach a new child node + * + * @param mixed $value + * @access public + * @return Zend_Server_Reflection_Node New child node + */ + public function createChild($value) + { + $child = new self($value, $this); + + return $child; + } + + /** + * Attach a child node + * + * @param Zend_Server_Reflection_Node $node + * @return void + */ + public function attachChild(Zend_Server_Reflection_Node $node) + { + $this->_children[] = $node; + + if ($node->getParent() !== $this) { + $node->setParent($this); + } + } + + /** + * Return an array of all child nodes + * + * @return array + */ + public function getChildren() + { + return $this->_children; + } + + /** + * Does this node have children? + * + * @return boolean + */ + public function hasChildren() + { + return count($this->_children) > 0; + } + + /** + * Return the parent node + * + * @return null|Zend_Server_Reflection_Node + */ + public function getParent() + { + return $this->_parent; + } + + /** + * Return the node's current value + * + * @return mixed + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the node value + * + * @param mixed $value + * @return void + */ + public function setValue($value) + { + $this->_value = $value; + } + + /** + * Retrieve the bottommost nodes of this node's tree + * + * Retrieves the bottommost nodes of the tree by recursively calling + * getEndPoints() on all children. If a child is null, it returns the parent + * as an end point. + * + * @return array + */ + public function getEndPoints() + { + $endPoints = array(); + if (!$this->hasChildren()) { + return $endPoints; + } + + foreach ($this->_children as $child) { + $value = $child->getValue(); + + if (null === $value) { + $endPoints[] = $this; + } elseif ((null !== $value) + && $child->hasChildren()) + { + $childEndPoints = $child->getEndPoints(); + if (!empty($childEndPoints)) { + $endPoints = array_merge($endPoints, $childEndPoints); + } + } elseif ((null !== $value) && !$child->hasChildren()) { + $endPoints[] = $child; + } + } + + return $endPoints; + } +} diff --git a/library/vendor/Zend/Server/Reflection/Parameter.php b/library/vendor/Zend/Server/Reflection/Parameter.php new file mode 100644 index 0000000..681824a --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Parameter.php @@ -0,0 +1,158 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Parameter Reflection + * + * Decorates a ReflectionParameter to allow setting the parameter type + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection_Parameter +{ + /** + * @var ReflectionParameter + */ + protected $_reflection; + + /** + * Parameter position + * @var int + */ + protected $_position; + + /** + * Parameter type + * @var string + */ + protected $_type; + + /** + * Parameter description + * @var string + */ + protected $_description; + + /** + * Constructor + * + * @param ReflectionParameter $r + * @param string $type Parameter type + * @param string $description Parameter description + */ + public function __construct(ReflectionParameter $r, $type = 'mixed', $description = '') + { + $this->_reflection = $r; + $this->setType($type); + $this->setDescription($description); + } + + /** + * Proxy reflection calls + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + if (method_exists($this->_reflection, $method)) { + return call_user_func_array(array($this->_reflection, $method), $args); + } + + throw new Zend_Server_Reflection_Exception('Invalid reflection method'); + } + + /** + * Retrieve parameter type + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * Set parameter type + * + * @param string|null $type + * @return void + */ + public function setType($type) + { + if (!is_string($type) && (null !== $type)) { + throw new Zend_Server_Reflection_Exception('Invalid parameter type'); + } + + $this->_type = $type; + } + + /** + * Retrieve parameter description + * + * @return string + */ + public function getDescription() + { + return $this->_description; + } + + /** + * Set parameter description + * + * @param string|null $description + * @return void + */ + public function setDescription($description) + { + if (!is_string($description) && (null !== $description)) { + throw new Zend_Server_Reflection_Exception('Invalid parameter description'); + } + + $this->_description = $description; + } + + /** + * Set parameter position + * + * @param int $index + * @return void + */ + public function setPosition($index) + { + $this->_position = (int) $index; + } + + /** + * Return parameter position + * + * @return int + */ + public function getPosition() + { + return $this->_position; + } +} diff --git a/library/vendor/Zend/Server/Reflection/Prototype.php b/library/vendor/Zend/Server/Reflection/Prototype.php new file mode 100644 index 0000000..e780623 --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/Prototype.php @@ -0,0 +1,99 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Server_Reflection_ReturnValue + */ + +/** + * Zend_Server_Reflection_Parameter + */ + +/** + * Method/Function prototypes + * + * Contains accessors for the return value and all method arguments. + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection_Prototype +{ + /** + * Constructor + * + * @param Zend_Server_Reflection_ReturnValue $return + * @param array $params + * @return void + */ + public function __construct(Zend_Server_Reflection_ReturnValue $return, $params = null) + { + $this->_return = $return; + + if (!is_array($params) && (null !== $params)) { + throw new Zend_Server_Reflection_Exception('Invalid parameters'); + } + + if (is_array($params)) { + foreach ($params as $param) { + if (!$param instanceof Zend_Server_Reflection_Parameter) { + throw new Zend_Server_Reflection_Exception('One or more params are invalid'); + } + } + } + + $this->_params = $params; + } + + /** + * Retrieve return type + * + * @return string + */ + public function getReturnType() + { + return $this->_return->getType(); + } + + /** + * Retrieve the return value object + * + * @access public + * @return Zend_Server_Reflection_ReturnValue + */ + public function getReturnValue() + { + return $this->_return; + } + + /** + * Retrieve method parameters + * + * @return array Array of {@link Zend_Server_Reflection_Parameter}s + */ + public function getParameters() + { + return $this->_params; + } +} diff --git a/library/vendor/Zend/Server/Reflection/ReturnValue.php b/library/vendor/Zend/Server/Reflection/ReturnValue.php new file mode 100644 index 0000000..dcc5132 --- /dev/null +++ b/library/vendor/Zend/Server/Reflection/ReturnValue.php @@ -0,0 +1,108 @@ +<?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_Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Return value reflection + * + * Stores the return value type and description + * + * @category Zend + * @package Zend_Server + * @subpackage Reflection + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Server_Reflection_ReturnValue +{ + /** + * Return value type + * @var string + */ + protected $_type; + + /** + * Return value description + * @var string + */ + protected $_description; + + /** + * Constructor + * + * @param string $type Return value type + * @param string $description Return value type + */ + public function __construct($type = 'mixed', $description = '') + { + $this->setType($type); + $this->setDescription($description); + } + + /** + * Retrieve parameter type + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * Set parameter type + * + * @param string|null $type + * @return void + */ + public function setType($type) + { + if (!is_string($type) && (null !== $type)) { + throw new Zend_Server_Reflection_Exception('Invalid parameter type'); + } + + $this->_type = $type; + } + + /** + * Retrieve parameter description + * + * @return string + */ + public function getDescription() + { + return $this->_description; + } + + /** + * Set parameter description + * + * @param string|null $description + * @return void + */ + public function setDescription($description) + { + if (!is_string($description) && (null !== $description)) { + throw new Zend_Server_Reflection_Exception('Invalid parameter description'); + } + + $this->_description = $description; + } +} |