DI containers are sorted alphabetically.
- Aura DI: source
- Auryn: source
- AWS/Guzzle: source
- Laravel 4: source
- League\Di: source
- Mouf: source
- Orno\Di: source
- PHP-DI: source
- Pimple: source
- PPI: source
- Symfony 2: source
- Zend Framework 2: source
Submit PR to expand.
Comparison:
Container | Read | Test | Not found behavior | ArrayAccess |
---|---|---|---|---|
Aura DI | get($key) |
has($key) |
Exception | No |
Auryn | make($key, [$params]) |
Exception | No | |
AWS/Guzzle | get($key, [$throwAway]) |
array access | Exception | Yes |
Laravel | make($key, [$params]) |
bound($key) |
Exception? | Yes |
League\Di | resolve($key) |
bound($key) |
Exception | No |
Mouf | get($key) |
has($key) |
Exception | No |
Orno\Di | resolve($key, [$args]) |
? | No | |
PHP-DI | get($key) |
has($key) |
Exception | No |
Pimple | array access | array access | Exception | Yes |
PPI | get($key, [$bool]) |
hasOption($key) |
Exception | Yes |
Symfony | get($id, [$invalidBehavior]) |
has($key) |
Null or Exception | No |
ZF2 | get($key, [$params]) |
Null | No |
Parameters surrounded by []
(like get($key, [$param])
) are optional parameters.
Summary
- Read method name:
get
: 7make
: 2resolve
: 2- array access: 1
- Read mandatory number of parameters is always 1
- Test existence:
- with: 9
- without: 4
- Test existence method name:
has
: 4bound
: 2hasOption
: 1- array access: 2
- Not found behavior:
- exception: 10
- null: 2
- ArrayAccess:
- no: 8
- yes: 4
How exactly you came
has()
being the common name for:Especially since only 4 out of 9 actually even had a method with such name and (from the surface-scan) it looks like at least two are just checking whether they have configuration for such instance. And the rest are checking whether they have already created such instance.
Neither of those sound like checking, if container "can create". Hell .. I am not even sure how you could check it beforehand.