Skip to content

Commit

Permalink
Implement definition-interop 0.2
Browse files Browse the repository at this point in the history
  • Loading branch information
mnapoli committed Dec 3, 2015
1 parent 773145e commit 3672745
Show file tree
Hide file tree
Showing 18 changed files with 86 additions and 77 deletions.
4 changes: 3 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@
"php": ">=5.4.0",
"container-interop/container-interop": "~1.0",
"php-di/invoker": "^1.1.1",
"php-di/phpdoc-reader": "^2.0.1"
"php-di/phpdoc-reader": "^2.0.1",
"container-interop/definition-interop": "~0.2.0",
"mnapoli/assembly": "~0.2.0"
},
"require-dev": {
"phpunit/phpunit": "~4.5",
Expand Down
15 changes: 8 additions & 7 deletions src/DI/Definition/AliasDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
namespace DI\Definition;

use DI\Scope;
use Interop\Container\Definition\ReferenceDefinitionInterface;

/**
* Defines an alias from an entry to another.
*
* @author Matthieu Napoli <matthieu@mnapoli.fr>
*/
class AliasDefinition implements CacheableDefinition
class AliasDefinition implements CacheableDefinition, ReferenceDefinitionInterface
{
/**
* Entry name.
Expand All @@ -21,7 +22,7 @@ class AliasDefinition implements CacheableDefinition
* Name of the target entry.
* @var string
*/
private $targetEntryName;
private $target;

/**
* @param string $name Entry name
Expand All @@ -30,11 +31,11 @@ class AliasDefinition implements CacheableDefinition
public function __construct($name, $targetEntryName)
{
$this->name = $name;
$this->targetEntryName = $targetEntryName;
$this->target = $targetEntryName;
}

/**
* @return string Entry name
* {@inheritdoc}
*/
public function getName()
{
Expand All @@ -50,10 +51,10 @@ public function getScope()
}

/**
* @return string
* {@inheritdoc}
*/
public function getTargetEntryName()
public function getTarget()
{
return $this->targetEntryName;
return $this->target;
}
}
3 changes: 2 additions & 1 deletion src/DI/Definition/Definition.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
namespace DI\Definition;

use DI\Factory\RequestedEntry;
use Interop\Container\Definition\DefinitionInterface;

/**
* Definition.
*
* @author Matthieu Napoli <matthieu@mnapoli.fr>
*/
interface Definition extends RequestedEntry
interface Definition extends DefinitionInterface, RequestedEntry
{
/**
* Returns the name of the entry in the container.
Expand Down
4 changes: 2 additions & 2 deletions src/DI/Definition/Dumper/AliasDefinitionDumper.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ public function dump(Definition $definition)
return sprintf(
'get(%s => %s)',
$definition->getName(),
$definition->getTargetEntryName()
$definition->getTarget()
);
}

return sprintf(
'get(%s)',
$definition->getTargetEntryName()
$definition->getTarget()
);
}
}
18 changes: 8 additions & 10 deletions src/DI/Definition/Resolver/AliasResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

namespace DI\Definition\Resolver;

use DI\Definition\AliasDefinition;
use DI\Definition\Definition;
use Interop\Container\ContainerInterface;
use Interop\Container\Definition\DefinitionInterface;
use Interop\Container\Definition\ReferenceDefinitionInterface;

/**
* Resolves an alias definition to a value.
Expand All @@ -22,8 +22,6 @@ class AliasResolver implements DefinitionResolver
/**
* The resolver needs a container.
* This container will be used to get the entry to which the alias points to.
*
* @param ContainerInterface $container
*/
public function __construct(ContainerInterface $container)
{
Expand All @@ -35,22 +33,22 @@ public function __construct(ContainerInterface $container)
*
* This will return the entry the alias points to.
*
* @param AliasDefinition $definition
* @param ReferenceDefinitionInterface $definition
*
* {@inheritdoc}
*/
public function resolve(Definition $definition, array $parameters = [])
public function resolve(DefinitionInterface $definition, array $parameters = [])
{
return $this->container->get($definition->getTargetEntryName());
return $this->container->get($definition->getTarget());
}

/**
* @param AliasDefinition $definition
* @param ReferenceDefinitionInterface $definition
*
* {@inheritdoc}
*/
public function isResolvable(Definition $definition, array $parameters = [])
public function isResolvable(DefinitionInterface $definition, array $parameters = [])
{
return $this->container->has($definition->getTargetEntryName());
return $this->container->has($definition->getTarget());
}
}
6 changes: 3 additions & 3 deletions src/DI/Definition/Resolver/ArrayResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
namespace DI\Definition\Resolver;

use DI\Definition\ArrayDefinition;
use DI\Definition\Definition;
use DI\Definition\Helper\DefinitionHelper;
use DI\DependencyException;
use Exception;
use Interop\Container\Definition\DefinitionInterface;

/**
* Resolves an array definition to a value.
Expand Down Expand Up @@ -38,7 +38,7 @@ public function __construct(DefinitionResolver $definitionResolver)
*
* {@inheritdoc}
*/
public function resolve(Definition $definition, array $parameters = [])
public function resolve(DefinitionInterface $definition, array $parameters = [])
{
$values = $definition->getValues();

Expand All @@ -50,7 +50,7 @@ public function resolve(Definition $definition, array $parameters = [])
/**
* {@inheritdoc}
*/
public function isResolvable(Definition $definition, array $parameters = [])
public function isResolvable(DefinitionInterface $definition, array $parameters = [])
{
return true;
}
Expand Down
8 changes: 4 additions & 4 deletions src/DI/Definition/Resolver/DecoratorResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
namespace DI\Definition\Resolver;

use DI\Definition\DecoratorDefinition;
use DI\Definition\Definition;
use DI\Definition\Exception\DefinitionException;
use Interop\Container\ContainerInterface;
use Interop\Container\Definition\DefinitionInterface;

/**
* Resolves a decorator definition to a value.
Expand Down Expand Up @@ -47,7 +47,7 @@ public function __construct(ContainerInterface $container, DefinitionResolver $d
*
* {@inheritdoc}
*/
public function resolve(Definition $definition, array $parameters = [])
public function resolve(DefinitionInterface $definition, array $parameters = [])
{
$callable = $definition->getCallable();

Expand All @@ -60,7 +60,7 @@ public function resolve(Definition $definition, array $parameters = [])

$decoratedDefinition = $definition->getDecoratedDefinition();

if (! $decoratedDefinition instanceof Definition) {
if (! $decoratedDefinition instanceof DefinitionInterface) {
if (! $definition->getSubDefinitionName()) {
throw new DefinitionException('Decorators cannot be nested in another definition');
}
Expand All @@ -79,7 +79,7 @@ public function resolve(Definition $definition, array $parameters = [])
/**
* {@inheritdoc}
*/
public function isResolvable(Definition $definition, array $parameters = [])
public function isResolvable(DefinitionInterface $definition, array $parameters = [])
{
return true;
}
Expand Down
13 changes: 7 additions & 6 deletions src/DI/Definition/Resolver/DefinitionResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use DI\Definition\Definition;
use DI\Definition\Exception\DefinitionException;
use Interop\Container\Definition\DefinitionInterface;

/**
* Resolves a definition to a value.
Expand All @@ -16,22 +17,22 @@ interface DefinitionResolver
/**
* Resolve a definition to a value.
*
* @param Definition $definition Object that defines how the value should be obtained.
* @param array $parameters Optional parameters to use to build the entry.
* @param DefinitionInterface $definition Object that defines how the value should be obtained.
* @param array $parameters Optional parameters to use to build the entry.
*
* @throws DefinitionException If the definition cannot be resolved.
*
* @return mixed Value obtained from the definition.
*/
public function resolve(Definition $definition, array $parameters = []);
public function resolve(DefinitionInterface $definition, array $parameters = []);

/**
* Check if a definition can be resolved.
*
* @param Definition $definition Object that defines how the value should be obtained.
* @param array $parameters Optional parameters to use to build the entry.
* @param DefinitionInterface $definition Object that defines how the value should be obtained.
* @param array $parameters Optional parameters to use to build the entry.
*
* @return bool
*/
public function isResolvable(Definition $definition, array $parameters = []);
public function isResolvable(DefinitionInterface $definition, array $parameters = []);
}
6 changes: 3 additions & 3 deletions src/DI/Definition/Resolver/EnvironmentVariableResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

namespace DI\Definition\Resolver;

use DI\Definition\Definition;
use DI\Definition\EnvironmentVariableDefinition;
use DI\Definition\Exception\DefinitionException;
use DI\Definition\Helper\DefinitionHelper;
use Interop\Container\Definition\DefinitionInterface;

/**
* Resolves a environment variable definition to a value.
Expand Down Expand Up @@ -37,7 +37,7 @@ public function __construct(DefinitionResolver $definitionResolver, $variableRea
*
* {@inheritdoc}
*/
public function resolve(Definition $definition, array $parameters = [])
public function resolve(DefinitionInterface $definition, array $parameters = [])
{
$value = call_user_func($this->variableReader, $definition->getVariableName());

Expand Down Expand Up @@ -67,7 +67,7 @@ public function resolve(Definition $definition, array $parameters = [])
*
* {@inheritdoc}
*/
public function isResolvable(Definition $definition, array $parameters = [])
public function isResolvable(DefinitionInterface $definition, array $parameters = [])
{
return true;
}
Expand Down
6 changes: 3 additions & 3 deletions src/DI/Definition/Resolver/FactoryResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

namespace DI\Definition\Resolver;

use DI\Definition\Definition;
use DI\Definition\Exception\DefinitionException;
use DI\Definition\FactoryDefinition;
use DI\Invoker\FactoryParameterResolver;
use Interop\Container\ContainerInterface;
use Interop\Container\Definition\DefinitionInterface;
use Invoker\Exception\NotCallableException;
use Invoker\Exception\NotEnoughParametersException;
use Invoker\Invoker;
Expand Down Expand Up @@ -51,7 +51,7 @@ public function __construct(ContainerInterface $container)
*
* {@inheritdoc}
*/
public function resolve(Definition $definition, array $parameters = [])
public function resolve(DefinitionInterface $definition, array $parameters = [])
{
if (! $this->invoker) {
$parameterResolver = new ResolverChain([
Expand Down Expand Up @@ -82,7 +82,7 @@ public function resolve(Definition $definition, array $parameters = [])
/**
* {@inheritdoc}
*/
public function isResolvable(Definition $definition, array $parameters = [])
public function isResolvable(DefinitionInterface $definition, array $parameters = [])
{
return true;
}
Expand Down
6 changes: 3 additions & 3 deletions src/DI/Definition/Resolver/InstanceInjector.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

namespace DI\Definition\Resolver;

use DI\Definition\Definition;
use DI\Definition\InstanceDefinition;
use DI\DependencyException;
use Interop\Container\Definition\DefinitionInterface;
use Interop\Container\Exception\NotFoundException;

/**
Expand All @@ -22,7 +22,7 @@ class InstanceInjector extends ObjectCreator
*
* {@inheritdoc}
*/
public function resolve(Definition $definition, array $parameters = [])
public function resolve(DefinitionInterface $definition, array $parameters = [])
{
try {
$this->injectMethodsAndProperties($definition->getInstance(), $definition->getObjectDefinition());
Expand All @@ -39,7 +39,7 @@ public function resolve(Definition $definition, array $parameters = [])
/**
* {@inheritdoc}
*/
public function isResolvable(Definition $definition, array $parameters = [])
public function isResolvable(DefinitionInterface $definition, array $parameters = [])
{
return true;
}
Expand Down
5 changes: 3 additions & 2 deletions src/DI/Definition/Resolver/ObjectCreator.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use DI\DependencyException;
use DI\Proxy\ProxyFactory;
use Exception;
use Interop\Container\Definition\DefinitionInterface;
use Interop\Container\Exception\NotFoundException;
use ProxyManager\Proxy\LazyLoadingInterface;
use ReflectionClass;
Expand Down Expand Up @@ -60,7 +61,7 @@ public function __construct(
*
* {@inheritdoc}
*/
public function resolve(Definition $definition, array $parameters = [])
public function resolve(DefinitionInterface $definition, array $parameters = [])
{
// Lazy?
if ($definition->isLazy()) {
Expand All @@ -78,7 +79,7 @@ public function resolve(Definition $definition, array $parameters = [])
*
* {@inheritdoc}
*/
public function isResolvable(Definition $definition, array $parameters = [])
public function isResolvable(DefinitionInterface $definition, array $parameters = [])
{
return $definition->isInstantiable();
}
Expand Down

0 comments on commit 3672745

Please sign in to comment.