Skip to content

Commit

Permalink
Require PHP 5.5 or above (#408)
Browse files Browse the repository at this point in the history
  • Loading branch information
mnapoli committed May 15, 2016
1 parent ae2bb05 commit 43b3302
Show file tree
Hide file tree
Showing 54 changed files with 466 additions and 425 deletions.
3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ language: php
sudo: false

php:
- 5.4
- 5.5
- 5.6
- 7.0
- hhvm

matrix:
include:
- php: 5.4
- php: 5.5
env: dependencies=lowest

before_script:
Expand Down
4 changes: 4 additions & 0 deletions change-log.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Change log

## 5.3

- PHP-DI now requires a version of PHP >= 5.5.0

## 5.2

Improvements:
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"test": "phpunit"
},
"require": {
"php": ">=5.4.0",
"php": ">=5.5.0",
"container-interop/container-interop": "~1.0",
"php-di/invoker": "^1.1.1",
"php-di/phpdoc-reader": "^2.0.1"
Expand Down
2 changes: 2 additions & 0 deletions doc/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ Install PHP-DI with [Composer](http://getcomposer.org/doc/00-intro.md):
composer require php-di/php-di
```

PHP-DI requires PHP 5.5 or above.

## Basic usage

### 1. Use dependency injection
Expand Down
6 changes: 3 additions & 3 deletions src/DI/Container.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,9 @@ public function __construct(
$this->definitionResolver = new ResolverDispatcher($this->wrapperContainer, $proxyFactory);

// Auto-register the container
$this->singletonEntries['DI\Container'] = $this;
$this->singletonEntries['DI\FactoryInterface'] = $this;
$this->singletonEntries['DI\InvokerInterface'] = $this;
$this->singletonEntries[self::class] = $this;
$this->singletonEntries[FactoryInterface::class] = $this;
$this->singletonEntries[InvokerInterface::class] = $this;
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/DI/Proxy/ProxyFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ private function createProxyManager()
return;
}

if (! class_exists('ProxyManager\Configuration')) {
throw new \RuntimeException('The ocramius/proxy-manager library is not installed. Lazy injection requires that library to be installed with Composer in order to work. Run "composer require ocramius/proxy-manager:~0.3".');
if (! class_exists(Configuration::class)) {
throw new \RuntimeException('The ocramius/proxy-manager library is not installed. Lazy injection requires that library to be installed with Composer in order to work. Run "composer require ocramius/proxy-manager:~1.0".');
}

$config = new Configuration();
Expand Down
18 changes: 9 additions & 9 deletions tests/IntegrationTest/Annotations/AnnotationsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public function inject_in_properties()
{
$container = $this->createContainer();
/** @var B $object */
$object = $container->get('DI\Test\IntegrationTest\Annotations\B');
$object = $container->get(B::class);
$this->assertTrue($object->public instanceof A);
$this->assertTrue($object->getProtected() instanceof A);
$this->assertTrue($object->getPrivate() instanceof A);
Expand All @@ -35,13 +35,13 @@ public function inject_in_parent_properties()
$container = $this->createContainer();

/** @var C $object */
$object = $container->get('DI\Test\IntegrationTest\Annotations\C');
$object = $container->get(C::class);
$this->assertTrue($object->public instanceof A);
$this->assertTrue($object->getProtected() instanceof A);
$this->assertTrue($object->getPrivate() instanceof A);

/** @var D $object */
$object = $container->get('DI\Test\IntegrationTest\Annotations\D');
$object = $container->get(D::class);
$this->assertTrue($object->public instanceof A);
$this->assertTrue($object->getProtected() instanceof A);
$this->assertTrue($object->getPrivate() instanceof A);
Expand All @@ -57,7 +57,7 @@ public function inject_in_private_parent_properties_with_same_name()
$container = $this->createContainer();

/** @var Child $object */
$object = $container->get('DI\Test\IntegrationTest\Annotations\Child');
$object = $container->get(Child::class);
$this->assertTrue($object->public instanceof A);
$this->assertTrue($object->getProtected() instanceof A);
$this->assertTrue($object->getPrivate() instanceof A);
Expand All @@ -76,7 +76,7 @@ public function inject_by_name()
]);

/** @var NamedInjection $object */
$object = $container->get('DI\Test\IntegrationTest\Annotations\NamedInjection');
$object = $container->get(NamedInjection::class);
$this->assertSame($dependency, $object->dependency);
}

Expand All @@ -87,7 +87,7 @@ public function inject_by_name()
public function errors_if_dependency_by_name_not_found()
{
$container = $this->createContainer();
$container->get('DI\Test\IntegrationTest\Annotations\NamedInjection');
$container->get(NamedInjection::class);
}

/**
Expand All @@ -100,13 +100,13 @@ public function resolve_class_names_using_import_statements()
$container = $this->createContainer();

/** @var $object InjectWithUseStatements */
$object = $container->get('DI\Test\IntegrationTest\Annotations\InjectWithUseStatements');
$object = $container->get(InjectWithUseStatements::class);
$this->assertTrue($object->a instanceof A);
$this->assertTrue($object->alias instanceof A);
$this->assertTrue($object->namespaceAlias instanceof A);

/** @var $object InjectWithUseStatements2 */
$object = $container->get('DI\Test\IntegrationTest\Annotations\InjectWithUseStatements\InjectWithUseStatements2');
$object = $container->get(InjectWithUseStatements2::class);
$this->assertTrue($object->dependency instanceof InjectWithUseStatements);
}

Expand All @@ -117,7 +117,7 @@ public function resolve_class_names_using_import_statements()
public function testNotFoundVarAnnotation()
{
$container = $this->createContainer();
$container->get('DI\Test\IntegrationTest\Annotations\NotFoundVarAnnotation');
$container->get(NotFoundVarAnnotation::class);
}

private function createContainer(array $definitions = [])
Expand Down
20 changes: 10 additions & 10 deletions tests/IntegrationTest/Definitions/FactoryDefinitionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ public function provideCallables()
'closure' => [function () { return 'bar'; }],
'function' => [__NAMESPACE__ . '\FactoryDefinition_test'],
'invokableObject' => [new FactoryDefinitionInvokableTestClass],
'invokableClass' => [__NAMESPACE__ . '\FactoryDefinitionInvokableTestClass'],
'[Class, staticMethod]' => [[__NAMESPACE__ . '\FactoryDefinitionTestClass', 'staticFoo']],
'Class::staticMethod' => [__NAMESPACE__ . '\FactoryDefinitionTestClass::staticFoo'],
'invokableClass' => [FactoryDefinitionInvokableTestClass::class],
'[Class, staticMethod]' => [[FactoryDefinitionTestClass::class, 'staticFoo']],
'Class::staticMethod' => [FactoryDefinitionTestClass::class . '::staticFoo'],
'[object, method]' => [[new FactoryDefinitionTestClass, 'foo']],
'[class, method]' => [[__NAMESPACE__ . '\FactoryDefinitionTestClass', 'foo']],
'class::method' => [__NAMESPACE__ . '\FactoryDefinitionTestClass::foo'],
'[class, method]' => [[FactoryDefinitionTestClass::class, 'foo']],
'class::method' => [FactoryDefinitionTestClass::class . '::foo'],
];
}

Expand Down Expand Up @@ -65,7 +65,7 @@ public function test_factory($callable)
public function test_named_container_entry_as_factory($callable)
{
$container = $this->createContainer([
'bar_baz' => \DI\object(__NAMESPACE__ . '\FactoryDefinitionTestClass'),
'bar_baz' => \DI\object(FactoryDefinitionTestClass::class),
'factory' => \DI\factory($callable),
]);

Expand All @@ -75,7 +75,7 @@ public function test_named_container_entry_as_factory($callable)
public function test_named_invokable_container_entry_as_factory()
{
$container = $this->createContainer([
'bar_baz' => \DI\object(__NAMESPACE__ . '\FactoryDefinitionInvokableTestClass'),
'bar_baz' => \DI\object(FactoryDefinitionInvokableTestClass::class),
'factory' => \DI\factory('bar_baz'),
]);

Expand All @@ -92,7 +92,7 @@ public function test_container_gets_injected_as_first_argument_without_typehint(

$factory = $container->get('factory');

$this->assertInstanceOf('Interop\Container\ContainerInterface', $factory);
$this->assertInstanceOf(ContainerInterface::class, $factory);
}

public function test_requested_entry_gets_injected_as_second_argument_without_typehint()
Expand Down Expand Up @@ -145,8 +145,8 @@ public function test_container_and_requested_entry_get_injected_in_arbitrary_pos
$factory = $container->get('factory');

$this->assertInstanceOf('stdClass', $factory[0]);
$this->assertInstanceOf('DI\Factory\RequestedEntry', $factory[1]);
$this->assertInstanceOf('Interop\Container\ContainerInterface', $factory[2]);
$this->assertInstanceOf(RequestedEntry::class, $factory[1]);
$this->assertInstanceOf(ContainerInterface::class, $factory[2]);
}

/**
Expand Down
11 changes: 6 additions & 5 deletions tests/IntegrationTest/Definitions/NestedDefinitionsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use DI\ContainerBuilder;
use DI\Test\IntegrationTest\Fixtures\Class1;
use DI\Test\IntegrationTest\Fixtures\Class2;
use DI\Test\IntegrationTest\Fixtures\Implementation1;
use DI\Test\IntegrationTest\Fixtures\LazyDependency;

Expand Down Expand Up @@ -43,11 +44,11 @@ public function should_allow_nested_definitions_in_object_definitions()
$lazyDep = new LazyDependency();

$builder->addDefinitions([
'foo' => 'bar',
'DI\Test\IntegrationTest\Fixtures\LazyDependency' => $lazyDep,
'obj' => \DI\object('DI\Test\IntegrationTest\Fixtures\Class1')
'foo' => 'bar',
LazyDependency::class => $lazyDep,
'obj' => \DI\object(Class1::class)
->constructor(
\DI\object('DI\Test\IntegrationTest\Fixtures\Class2'),
\DI\object(Class2::class),
\DI\factory(function () use ($impl) {
return $impl;
})
Expand All @@ -63,7 +64,7 @@ public function should_allow_nested_definitions_in_object_definitions()
$obj = $container->get('obj');

// Assertions on constructor parameters
$this->assertInstanceOf('DI\Test\IntegrationTest\Fixtures\Class2', $obj->constructorParam1);
$this->assertInstanceOf(Class2::class, $obj->constructorParam1);
$this->assertSame($impl, $obj->constructorParam2);
$this->assertSame($lazyDep, $obj->constructorParam3);

Expand Down
19 changes: 10 additions & 9 deletions tests/IntegrationTest/Definitions/ObjectDefinitionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace DI\Test\IntegrationTest\Definitions;

use DI\ContainerBuilder;
use DI\Test\IntegrationTest\Definitions\ObjectDefinition\Class1;

/**
* Test object definitions.
Expand All @@ -21,29 +22,29 @@ public function test_object_without_autowiring()
// with the same name
'stdClass' => \DI\object('stdClass'),
// with name inferred
__NAMESPACE__ . '\ObjectDefinition\Class1' => \DI\object(),
Class1::class => \DI\object(),
// with a different name
'object' => \DI\object(__NAMESPACE__ . '\ObjectDefinition\Class1'),
'object' => \DI\object(Class1::class),
]);
$container = $builder->build();

$this->assertInstanceOf('stdClass', $container->get('stdClass'));
$this->assertInstanceOf(__NAMESPACE__ . '\ObjectDefinition\Class1', $container->get(__NAMESPACE__ . '\ObjectDefinition\Class1'));
$this->assertInstanceOf(__NAMESPACE__ . '\ObjectDefinition\Class1', $container->get('object'));
$this->assertInstanceOf(Class1::class, $container->get(Class1::class));
$this->assertInstanceOf(Class1::class, $container->get('object'));
}

public function test_multiple_method_call()
{
$builder = new ContainerBuilder();
$builder->useAutowiring(false);
$builder->addDefinitions([
__NAMESPACE__ . '\ObjectDefinition\Class1' => \DI\object()
Class1::class => \DI\object()
->method('increment')
->method('increment'),
]);
$container = $builder->build();

$class = $container->get(__NAMESPACE__ . '\ObjectDefinition\Class1');
$class = $container->get(Class1::class);
$this->assertEquals(2, $class->count);
}

Expand All @@ -52,19 +53,19 @@ public function test_override_parameter_with_multiple_method_call()
$builder = new ContainerBuilder();
$builder->useAutowiring(false);
$builder->addDefinitions([
__NAMESPACE__ . '\ObjectDefinition\Class1' => \DI\object()
Class1::class => \DI\object()
->method('add', 'foo')
->method('add', 'foo'),
]);
$builder->addDefinitions([
// Override a method parameter
__NAMESPACE__ . '\ObjectDefinition\Class1' => \DI\object()
Class1::class => \DI\object()
->methodParameter('add', 0, 'bar'),
]);
$container = $builder->build();

// Should override only the first method call
$class = $container->get(__NAMESPACE__ . '\ObjectDefinition\Class1');
$class = $container->get(Class1::class);
$this->assertEquals(['bar', 'foo'], $class->items);
}
}
3 changes: 1 addition & 2 deletions tests/IntegrationTest/Definitions/StringDefinitionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ public function test_nested_string_expressions()

/**
* @expectedException \DI\DependencyException
* @expectedExceptionMessage Error while parsing string expression for entry 'test-string': No entry or class found
* for 'foo'
* @expectedExceptionMessage Error while parsing string expression for entry 'test-string': No entry or class found for 'foo'
*/
public function test_string_with_nonexistent_placeholder()
{
Expand Down
12 changes: 7 additions & 5 deletions tests/IntegrationTest/Definitions/WildcardDefinitionsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

use DI\Annotation\Inject;
use DI\ContainerBuilder;
use DI\Test\IntegrationTest\Fixtures\Implementation1;
use DI\Test\IntegrationTest\Fixtures\Interface1;

/**
* Test definitions using wildcards.
Expand All @@ -23,8 +25,8 @@ public function test_wildcards()

$this->assertEquals('bar', $container->get('foo1'));

$object = $container->get('DI\Test\IntegrationTest\Fixtures\Interface1');
$this->assertInstanceOf('DI\Test\IntegrationTest\Fixtures\Implementation1', $object);
$object = $container->get(Interface1::class);
$this->assertInstanceOf(Implementation1::class, $object);
}

public function test_wildcards_as_dependency()
Expand All @@ -37,16 +39,16 @@ public function test_wildcards_as_dependency()
$container = $builder->build();

/** @var WildcardDefinitionsTestFixture $object */
$object = $container->get(__NAMESPACE__ . '\WildcardDefinitionsTestFixture');
$this->assertInstanceOf('DI\Test\IntegrationTest\Fixtures\Implementation1', $object->dependency);
$object = $container->get(WildcardDefinitionsTestFixture::class);
$this->assertInstanceOf(Implementation1::class, $object->dependency);
}
}

class WildcardDefinitionsTestFixture
{
/**
* @Inject
* @var \DI\Test\IntegrationTest\Fixtures\Interface1
* @var Interface1
*/
public $dependency;
}
Loading

0 comments on commit 43b3302

Please sign in to comment.