本文整理汇总了PHP中Zend_Server_Method_Definition类的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Server_Method_Definition类的具体用法?PHP Zend_Server_Method_Definition怎么用?PHP Zend_Server_Method_Definition使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Zend_Server_Method_Definition类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addMethod
/**
* 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)) {
// require_once 'Zend/Server/Method/Definition.php';
$method = new Zend_Server_Method_Definition($method);
} elseif (!$method instanceof Zend_Server_Method_Definition) {
// require_once 'Zend/Server/Exception.php';
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) {
// require_once 'Zend/Server/Exception.php';
throw new Zend_Server_Exception('No method name provided');
}
if (!$this->_overwriteExistingMethods && array_key_exists($name, $this->_methods)) {
// require_once 'Zend/Server/Exception.php';
throw new Zend_Server_Exception(sprintf('Method by name of "%s" already exists', $name));
}
$this->_methods[$name] = $method;
return $this;
}
示例2: addFunctionsAsMethods
/**
* Here we need to be able to add new functions to the call list
*
* @param array $functions
*/
public function addFunctionsAsMethods($functions)
{
foreach ($functions as $key => $function) {
// do a reflection on the function interface
$reflection = new Zend_Server_Reflection_Function(new ReflectionFunction($function));
// build up the method definition
$definition = new Zend_Server_Method_Definition();
$definition->setName($key)->setCallback($this->_buildCallback($reflection))->setMethodHelp($reflection->getDescription())->setInvokeArguments($reflection->getInvokeArguments());
// here is where the parameters really get built up
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);
}
// finally add the new function definition to the available call stack
$this->_table->addMethod($definition, $key);
}
}
示例3: _dispatch
/**
* 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($invokeArgs);
} else {
$object = new $class();
}
}
return call_user_func_array(array($object, $method), $params);
}
示例4: _getReturnType
/**
* Get method return type
*
* @param Zend_Server_Reflection_Function_Abstract $method
* @return string|array
*/
protected function _getReturnType(Zend_Server_Method_Definition $method)
{
$return = array();
foreach ($method->getPrototypes() as $prototype) {
$return[] = $prototype->getReturnType();
}
if (1 == count($return)) {
return $return[0];
}
return $return;
}
示例5: testPassingOptionsToConstructorShouldSetObjectState
public function testPassingOptionsToConstructorShouldSetObjectState()
{
$options = array('name' => 'foo.bar', 'callback' => array('function' => 'foo', 'type' => 'function'), 'prototypes' => array(array('returnType' => 'struct', 'parameters' => array('string', 'array'))), 'methodHelp' => 'foo bar', 'object' => new stdClass(), 'invokeArguments' => array('foo', array('bar', 'baz')));
$definition = new Zend_Server_Method_Definition($options);
$test = $definition->toArray();
$this->assertEquals($options['name'], $test['name']);
$this->assertEquals($options['callback'], $test['callback']);
$this->assertEquals($options['prototypes'], $test['prototypes']);
$this->assertEquals($options['methodHelp'], $test['methodHelp']);
$this->assertEquals($options['object'], $test['object']);
$this->assertEquals($options['invokeArguments'], $test['invokeArguments']);
}