Skip to content
This repository has been archived by the owner on Jan 29, 2020. It is now read-only.

Commit

Permalink
Merge branch 'master' of git://github.com/zendframework/zf2 into ZF2-377
Browse files Browse the repository at this point in the history
  • Loading branch information
marc-mabe committed Jul 17, 2012
6 parents 1b64e7d + 1f50979 + 7465e5d + 92b6722 + 1d54f79 + ab5cea3 commit c4aa2e1
Show file tree
Hide file tree
Showing 34 changed files with 750 additions and 335 deletions.
35 changes: 27 additions & 8 deletions src/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,15 @@

use Traversable;
use Zend\Stdlib\ArrayUtils;
use Zend\Di\Definition\ArrayDefinition;
use Zend\Di\Definition\RuntimeDefinition;

/**
* Configures Di instances
*
* @category Zend
* @package Zend_Di
*/
class Configuration
{
/**
Expand All @@ -23,7 +31,7 @@ class Configuration
/**
* Constructor
*
* @param array|Traversable $options
* @param array|Traversable $options
* @throws Exception\InvalidArgumentException
*/
public function __construct($options)
Expand All @@ -43,7 +51,7 @@ public function __construct($options)
/**
* Configure
*
* @param Di $di
* @param Di $di
* @return void
*/
public function configure(Di $di)
Expand All @@ -58,14 +66,18 @@ public function configure(Di $di)

}

/**
* @param Di $di
* @param array $definition
*/
public function configureDefinition(Di $di, $definition)
{
foreach ($definition as $definitionType => $definitionData) {
switch ($definitionType) {
case 'compiler':
foreach ($definitionData as $filename) {
if (is_readable($filename)) {
$di->definitions()->addDefinition(new \Zend\Di\Definition\ArrayDefinition(include $filename), false);
$di->definitions()->addDefinition(new ArrayDefinition(include $filename), false);
}
}
break;
Expand All @@ -74,16 +86,18 @@ public function configureDefinition(Di $di, $definition)
// Remove runtime from definition list if not enabled
$definitions = array();
foreach ($di->definitions() as $definition) {
if (!$definition instanceof \Zend\Di\Definition\RuntimeDefinition) {
if (!$definition instanceof RuntimeDefinition) {
$definitions[] = $definition;
}
}
$definitions = new DefinitionList($definitions);
$di->setDefinitionList($definitions);
} elseif (isset($definitionData['use_annotations']) && $definitionData['use_annotations']) {
$di->definitions()->getDefinitionByType('\Zend\Di\Definition\RuntimeDefinition')
->getIntrospectionStrategy()
->setUseAnnotations(true);
/* @var $runtimeDefinition Definition\RuntimeDefinition */
$runtimeDefinition = $di
->definitions()
->getDefinitionByType('\Zend\Di\Definition\RuntimeDefinition');
$runtimeDefinition->getIntrospectionStrategy()->setUseAnnotations(true);
}
break;
case 'class':
Expand Down Expand Up @@ -137,6 +151,12 @@ public function configureDefinition(Di $di, $definition)

}

/**
* Configures a given Di instance
*
* @param Di $di
* @param $instanceData
*/
public function configureInstance(Di $di, $instanceData)
{
$im = $di->instanceManager();
Expand Down Expand Up @@ -183,5 +203,4 @@ public function configureInstance(Di $di, $instanceData)

}


}
13 changes: 12 additions & 1 deletion src/Definition/Annotation/Inject.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,22 @@

use Zend\Code\Annotation\AnnotationInterface;

/**
* Annotation for injection endpoints for dependencies
*
* @category Zend
* @package Zend_Di
*/
class Inject implements AnnotationInterface
{

/**
* @var mixed
*/
protected $content = null;

/**
* {@inheritDoc}
*/
public function initialize($content)
{
$this->content = $content;
Expand Down
13 changes: 12 additions & 1 deletion src/Definition/Annotation/Instantiator.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,22 @@

use Zend\Code\Annotation\AnnotationInterface;

/**
* Annotation for instantiator
*
* @category Zend
* @package Zend_Di
*/
class Instantiator implements AnnotationInterface
{

/**
* @var mixed
*/
protected $content = null;

/**
* {@inheritDoc}
*/
public function initialize($content)
{
$this->content = $content;
Expand Down
46 changes: 41 additions & 5 deletions src/Definition/ArrayDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,23 @@

namespace Zend\Di\Definition;

/**
* Class definitions based on a given array
*
* @category Zend
* @package Zend_Di
*/
class ArrayDefinition implements DefinitionInterface
{

/**
* @var array
*/
protected $dataArray = array();

public function __construct(Array $dataArray)
/**
* @param array $dataArray
*/
public function __construct(array $dataArray)
{
foreach ($dataArray as $class => $value) {
// force lower names
Expand All @@ -24,16 +35,25 @@ public function __construct(Array $dataArray)
$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])) {
Expand All @@ -47,6 +67,9 @@ public function getClassSupertypes($class)
return $this->dataArray[$class]['supertypes'];
}

/**
* {@inheritDoc}
*/
public function getInstantiator($class)
{
if (!isset($this->dataArray[$class])) {
Expand All @@ -60,6 +83,9 @@ public function getInstantiator($class)
return $this->dataArray[$class]['instantiator'];
}

/**
* {@inheritDoc}
*/
public function hasMethods($class)
{
if (!isset($this->dataArray[$class])) {
Expand All @@ -73,6 +99,9 @@ public function hasMethods($class)
return (count($this->dataArray[$class]['methods']) > 0);
}

/**
* {@inheritDoc}
*/
public function hasMethod($class, $method)
{
if (!isset($this->dataArray[$class])) {
Expand All @@ -86,6 +115,9 @@ public function hasMethod($class, $method)
return array_key_exists($method, $this->dataArray[$class]['methods']);
}

/**
* {@inheritDoc}
*/
public function getMethods($class)
{
if (!isset($this->dataArray[$class])) {
Expand All @@ -100,15 +132,16 @@ public function getMethods($class)
}

/**
* @param $class
* @param $method
* @return bool
* {@inheritDoc}
*/
public function hasMethodParameters($class, $method)
{
return isset($this->dataArray[$class]['parameters'][$method]);
}

/**
* {@inheritDoc}
*/
public function getMethodParameters($class, $method)
{
if (!isset($this->dataArray[$class])) {
Expand All @@ -126,6 +159,9 @@ public function getMethodParameters($class, $method)
return $this->dataArray[$class]['parameters'][$method];
}

/**
* @return array
*/
public function toArray()
{
return $this->dataArray;
Expand Down
33 changes: 31 additions & 2 deletions src/Definition/Builder/InjectionMethod.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,63 @@

namespace Zend\Di\Definition\Builder;

/**
* Definitions for an injection endpoint method
*
* @category Zend
* @package Zend_Di
*/
class InjectionMethod
{
const PARAMETER_POSTION_NEXT = 'next';

/**
* @var string|null
*/
protected $name = null;

/**
* @var array
*/
protected $parameters = array();

/**
* @param string|null $name
* @return self
*/
public function setName($name)
{
$this->name = $name;

return $this;
}

/**
* @return null|string
*/
public function getName()
{
return $this->name;
}

/**
* @param string $name
* @param string|null $class
* @param mixed|null $isRequired
* @return InjectionMethod
*/
public function addParameter($name, $class = null, $isRequired = null)
{
$this->parameters[] = array(
$name,
$class,
($isRequired == null) ? true : false
);

return $this;
}

/**
* @return array
*/
public function getParameters()
{
return $this->parameters;
Expand Down
Loading

0 comments on commit c4aa2e1

Please sign in to comment.