PageRenderTime 25ms CodeModel.GetById 19ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/framework/vendor/zend/Zend/Server/Method/Callback.php

http://zoop.googlecode.com/
PHP | 205 lines | 83 code | 16 blank | 106 comment | 8 complexity | 4f07019ca70945c0f53a0cf537d86d53 MD5 | raw file
  1<?php
  2/**
  3 * Zend Framework
  4 *
  5 * LICENSE
  6 *
  7 * This source file is subject to the new BSD license that is bundled
  8 * with this package in the file LICENSE.txt.
  9 * It is also available through the world-wide-web at this URL:
 10 * http://framework.zend.com/license/new-bsd
 11 * If you did not receive a copy of the license and are unable to
 12 * obtain it through the world-wide-web, please send an email
 13 * to license@zend.com so we can send you a copy immediately.
 14 *
 15 * @category   Zend
 16 * @package    Zend_Server
 17 * @subpackage Method
 18 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 19 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 20 * @version    $Id: Callback.php 20096 2010-01-06 02:05:09Z bkarwin $
 21 */
 22
 23/**
 24 * Method callback metadata
 25 *
 26 * @category   Zend
 27 * @package    Zend_Server
 28 * @subpackage Method
 29 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 30 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 31 */
 32class Zend_Server_Method_Callback
 33{
 34    /**
 35     * @var string Class name for class method callback
 36     */
 37    protected $_class;
 38
 39    /**
 40     * @var string Function name for function callback
 41     */
 42    protected $_function;
 43
 44    /**
 45     * @var string Method name for class method callback
 46     */
 47    protected $_method;
 48
 49    /**
 50     * @var string Callback type
 51     */
 52    protected $_type;
 53
 54    /**
 55     * @var array Valid callback types
 56     */
 57    protected $_types = array('function', 'static', 'instance');
 58
 59    /**
 60     * Constructor
 61     *
 62     * @param  null|array $options
 63     * @return void
 64     */
 65    public function __construct($options = null)
 66    {
 67        if ((null !== $options) && is_array($options))  {
 68            $this->setOptions($options);
 69        }
 70    }
 71
 72    /**
 73     * Set object state from array of options
 74     *
 75     * @param  array $options
 76     * @return Zend_Server_Method_Callback
 77     */
 78    public function setOptions(array $options)
 79    {
 80        foreach ($options as $key => $value) {
 81            $method = 'set' . ucfirst($key);
 82            if (method_exists($this, $method)) {
 83                $this->$method($value);
 84            }
 85        }
 86        return $this;
 87    }
 88
 89    /**
 90     * Set callback class
 91     *
 92     * @param  string $class
 93     * @return Zend_Server_Method_Callback
 94     */
 95    public function setClass($class)
 96    {
 97        if (is_object($class)) {
 98            $class = get_class($class);
 99        }
100        $this->_class = $class;
101        return $this;
102    }
103
104    /**
105     * Get callback class
106     *
107     * @return string|null
108     */
109    public function getClass()
110    {
111        return $this->_class;
112    }
113
114    /**
115     * Set callback function
116     *
117     * @param  string $function
118     * @return Zend_Server_Method_Callback
119     */
120    public function setFunction($function)
121    {
122        $this->_function = (string) $function;
123        $this->setType('function');
124        return $this;
125    }
126
127    /**
128     * Get callback function
129     *
130     * @return null|string
131     */
132    public function getFunction()
133    {
134        return $this->_function;
135    }
136
137    /**
138     * Set callback class method
139     *
140     * @param  string $method
141     * @return Zend_Server_Method_Callback
142     */
143    public function setMethod($method)
144    {
145        $this->_method = $method;
146        return $this;
147    }
148
149    /**
150     * Get callback class  method
151     *
152     * @return null|string
153     */
154    public function getMethod()
155    {
156        return $this->_method;
157    }
158
159    /**
160     * Set callback type
161     *
162     * @param  string $type
163     * @return Zend_Server_Method_Callback
164     * @throws Zend_Server_Exception
165     */
166    public function setType($type)
167    {
168        if (!in_array($type, $this->_types)) {
169            require_once 'Zend/Server/Exception.php';
170            throw new Zend_Server_Exception('Invalid method callback type  passed to ' . __CLASS__ . '::' . __METHOD__);
171        }
172        $this->_type = $type;
173        return $this;
174    }
175
176    /**
177     * Get callback type
178     *
179     * @return string
180     */
181    public function getType()
182    {
183        return $this->_type;
184    }
185
186    /**
187     * Cast callback to array
188     *
189     * @return array
190     */
191    public function toArray()
192    {
193        $type = $this->getType();
194        $array = array(
195            'type' => $type,
196        );
197        if ('function' == $type) {
198            $array['function'] = $this->getFunction();
199        } else {
200            $array['class']  = $this->getClass();
201            $array['method'] = $this->getMethod();
202        }
203        return $array;
204    }
205}