- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- namespace Zend\Di\ServiceLocator;
- /**
- * Container for methods and parameters used by by Di to create a particular instance
- */
- class GeneratorInstance
- {
- /**
- * @var string|null
- */
- protected $class;
- /**
- * @var string|null
- */
- protected $alias;
- /**
- * @var mixed
- */
- protected $constructor;
- /**
- * @var array
- */
- protected $params;
- /**
- * @var array
- */
- protected $methods = array();
- /**
- * @var bool
- */
- protected $shared = true;
- /**
- * @param string|null $class
- * @param string|null $alias
- * @param mixed $constructor
- * @param array $params
- */
- public function __construct($class, $alias, $constructor, array $params)
- {
- $this->class = $class;
- $this->alias = $alias;
- $this->constructor = $constructor;
- $this->params = $params;
- }
- /**
- * Retrieves the best available name for this instance (instance alias first then class name)
- *
- * @return string|null
- */
- public function getName()
- {
- return $this->alias ? $this->alias : $this->class;
- }
- /**
- * Class of the instance. Null if class is unclear (such as when the instance is produced by a callback)
- *
- * @return string|null
- */
- public function getClass()
- {
- return $this->class;
- }
- /**
- * Alias for the instance (if any)
- *
- * @return string|null
- */
- public function getAlias()
- {
- return $this->alias;
- }
- /**
- * Set class name
- *
- * In the case of an instance created via a callback, we need to set the
- * class name after creating the generator instance.
- *
- * @param string $class
- * @return GeneratorInstance
- */
- public function setClass($class)
- {
- $this->class = $class;
- return $this;
- }
- /**
- * Set instance alias
- *
- * @param string $alias
- * @return GeneratorInstance
- */
- public function setAlias($alias)
- {
- $this->alias = $alias;
- return $this;
- }
- /**
- * Get instantiator
- *
- * @return mixed constructor method name or callable responsible for generating instance
- */
- public function getConstructor()
- {
- return $this->constructor;
- }
- /**
- * Parameters passed to the instantiator as an ordered list of parameters. Each parameter that refers to another
- * instance fetched recursively is a GeneratorInstance itself
- *
- * @return array
- */
- public function getParams()
- {
- return $this->params;
- }
- /**
- * Set methods
- *
- * @param array $methods
- * @return GeneratorInstance
- */
- public function setMethods(array $methods)
- {
- $this->methods = $methods;
- return $this;
- }
- /**
- * Add a method called on the instance
- *
- * @param $method
- * @return GeneratorInstance
- */
- public function addMethod($method)
- {
- $this->methods[] = $method;
- return $this;
- }
- /**
- * Retrieves a list of methods that are called on the instance in their call order. Each returned element has form
- * array('method' => 'methodName', 'params' => array( ... ordered list of call parameters ... ), where every call
- * parameter that is a recursively fetched instance is a GeneratorInstance itself
- *
- * @return array
- */
- public function getMethods()
- {
- return $this->methods;
- }
- /**
- * @param bool $shared
- */
- public function setShared($shared)
- {
- $this->shared = (bool) $shared;
- }
- /**
- * Retrieves whether the instance is shared or not
- *
- * @return bool
- */
- public function isShared()
- {
- return $this->shared;
- }
- }