ehough / iconic
Fork of Symfony's Dependency Injection component compatible with PHP 5.2+.
Requires
- php: >=5.2.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- symfony/config: ~2.2
- symfony/expression-language: ~2.4
- symfony/yaml: ~2.0
Suggests
- symfony/config
- symfony/proxy-manager-bridge: Generate service proxies to lazy load them
- symfony/yaml
This package is not auto-updated.
Last update: 2020-01-24 14:48:04 UTC
README
This library is no longer supported or maintained as PHP 5.2 usage levels have finally dropped below 10%
Fork of Symfony's Dependency Injection component compatible with PHP 5.2+.
Motivation
Symfony's Dependency Injection component is a powerful DI library, but it's only compatible with PHP 5.3+. While 97% of PHP servers run PHP 5.2 or higher, 32% of all servers are still running PHP 5.2 or lower (source). It would be a shame to exempt this library from nearly a third of the world's servers just because of a few version incompatibilities.
Differences from Symfony's Dependency Injection component
The primary difference is naming conventions of the Symfony classes.
Instead of the \Symfony\Component\DependencyInjection
namespace (and sub-namespaces), prefix the Symfony class names
with ehough_iconic
and follow the PEAR naming convention
A few examples of class naming conversions:
\Symfony\Component\DependencyInjection\ContainerBuilder -----> ehough_iconic_ContainerBuilder
\Symfony\Component\DependencyInjection\Compiler\Compiler -----> ehough_iconic_compiler_Compiler
\Symfony\Component\DependencyInjection\ParameterBag\ParameterBag -----> ehough_iconic_parameterbag_ParameterBag
Other gotchas when using iconic instead of Symfony's Dependency Injection component
- Most of the loaders and dumpers can only be used with PHP 5.3+
- The expression language feature is only available with PHP 5.3+
Usage
Here is a simple example that shows how to register services and parameters:
$sc = new ehough_iconic_ContainerBuilder(); $sc ->register('foo', '%foo.class%') ->addArgument(new ehough_iconic_Reference('bar')) ; $sc->setParameter('foo.class', 'Foo'); $sc->get('foo');
Method Calls (Setter Injection):
$sc = new ehough_iconic_ContainerBuilder(); $sc ->register('bar', '%bar.class%') ->addMethodCall('setFoo', array(new ehough_iconic_Reference('foo'))) ; $sc->setParameter('bar.class', 'Bar'); $sc->get('bar');
Factory Class:
If your service is retrieved by calling a static method:
$sc = new ehough_iconic_ContainerBuilder(); $sc ->register('bar', '%bar.class%') ->setFactoryClass('%bar.class%') ->setFactoryMethod('getInstance') ->addArgument('Aarrg!!!') ; $sc->setParameter('bar.class', 'Bar'); $sc->get('bar');
File Include:
For some services, especially those that are difficult or impossible to autoload, you may need the container to include a file before instantiating your class.
$sc = new ehough_iconic_ContainerBuilder(); $sc ->register('bar', '%bar.class%') ->setFile('/path/to/file') ->addArgument('Aarrg!!!') ; $sc->setParameter('bar.class', 'Bar'); $sc->get('bar');
Releases and Versioning
Releases are synchronized with the upstream Symfony repository. e.g. ehough/iconic v2.3.2
has merged the code
from symfony/DependencyInjection v2.3.2
.