<?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\Definition;
use Zend\Di\Definition\Builder\InjectionMethod;
/**
* Class definitions based on a given array
*/
class ArrayDefinition implements DefinitionInterface
{
/**
* @var array
*/
protected $dataArray = array();
/**
* @param array $dataArray
*/
public function __construct(array $dataArray)
{
foreach ($dataArray as $class => $value) {
// force lower names
$dataArray[$class] = array_change_key_case($dataArray[$class], CASE_LOWER);
}
foreach ($dataArray as $class => $definition) {
if (isset($definition['methods']) && is_array($definition['methods'])) {
foreach ($definition['methods'] as $type => $requirement) {
if (!is_int($requirement)) {
$dataArray[$class]['methods'][$type] = InjectionMethod::detectMethodRequirement($requirement);
}
}
}
}
$this->dataArray = $dataArray;
}
/**
* {@inheritDoc}
*/
public function getClasses()
{
return array_keys($this->dataArray);
}
/**
* {@inheritDoc}
*/
public function hasClass($class)
{
return array_key_exists($class, $this->dataArray);
}
/**
* {@inheritDoc}
*/
public function getClassSupertypes($class)
{
if (!isset($this->dataArray[$class])) {
return array();
}
if (!isset($this->dataArray[$class]['supertypes'])) {
return array();
}
return $this->dataArray[$class]['supertypes'];
}
/**
* {@inheritDoc}
*/
public function getInstantiator($class)
{
if (!isset($this->dataArray[$class])) {
return null;
}
if (!isset($this->dataArray[$class]['instantiator'])) {
return '__construct';
}
return $this->dataArray[$class]['instantiator'];
}
/**
* {@inheritDoc}
*/
public function hasMethods($class)
{
if (!isset($this->dataArray[$class])) {
return false;
}
if (!isset($this->dataArray[$class]['methods'])) {
return false;
}
return (count($this->dataArray[$class]['methods']) > 0);
}
/**
* {@inheritDoc}
*/
public function hasMethod($class, $method)
{
if (!isset($this->dataArray[$class])) {
return false;
}
if (!isset($this->dataArray[$class]['methods'])) {
return false;
}
return array_key_exists($method, $this->dataArray[$class]['methods']);
}
/**
* {@inheritDoc}
*/
public function getMethods($class)
{
if (!isset($this->dataArray[$class])) {
return array();
}
if (!isset($this->dataArray[$class]['methods'])) {
return array();
}
return $this->dataArray[$class]['methods'];
}
/**
* {@inheritDoc}
*/
public function hasMethodParameters($class, $method)
{
return isset($this->dataArray[$class]['parameters'][$method]);
}
/**
* {@inheritDoc}
*/
public function getMethodParameters($class, $method)
{
if (!isset($this->dataArray[$class])) {
return array();
}
if (!isset($this->dataArray[$class]['parameters'])) {
return array();
}
if (!isset($this->dataArray[$class]['parameters'][$method])) {
return array();
}
return $this->dataArray[$class]['parameters'][$method];
}
/**
* @return array
*/
public function toArray()
{
return $this->dataArray;
}
}
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
|
|