项目作者: appzcoder

项目描述 :
Dependency Injection Container
高级语言: PHP
项目地址: git://github.com/appzcoder/container.git
创建时间: 2015-10-04T08:02:54Z
项目社区:https://github.com/appzcoder/container

开源协议:

下载


DI Container

Dependency Injection Container

Installation

  1. Run

    1. composer require appzcoder/container:"dev-master"
  2. Add bellow lines to your script

    1. require 'vendor/autoload.php';

Usage

  1. class Foo // Has dependencies
  2. {
  3. protected $bar;
  4. protected $fooBar;
  5. protected $name;
  6. public function __construct(Bar $bar, $name='Sohel Amin', $param2=null) // Dependency Injected
  7. {
  8. $this->bar = $bar;
  9. $this->name = $name;
  10. }
  11. public function setterMethod(FooBar $fooBar) // Dependency Injected on method
  12. {
  13. return $this->fooBar = $fooBar;
  14. }
  15. }
  16. class Bar { } // No dependencies
  17. class FooBar { } // No dependencies
  18. // Instantiate the container
  19. $container = new Appzcoder\Container\Container();
  20. // Registering class with dependencies
  21. $container->set('Foo');
  22. // Registering class with another name
  23. $container->set('foo', 'Bar');
  24. // Binding a closure object with a name
  25. $container->setInstance('FooBar', function () {
  26. return new FooBar();
  27. });
  28. // Registering class with parameters
  29. $container->set('Foo', 'Foo', ['param 1', 'param 2']);
  30. // Binding an instance with a name
  31. $instance = new FooBar();
  32. $container->setInstance('FooBar', $instance);
  33. // Binding an instance/object with container's array
  34. $container['FooBar'] = new FooBar();
  35. // Calling a setter method with dependencies
  36. $container->set('Foo', 'Foo', ['param 1', 'param 2']);
  37. $instance = $container->get('Foo');
  38. $container->call([$instance, 'setterMethod'], ['param 1', 'param 2']);
  39. // Accessing container or getting instances
  40. $instance1 = $container->get('Foo');
  41. $instance2 = $container['Foo']; // For this should have registered or bounded "Foo"

Author

Sohel Amin