dev-master
9999999-dev http://liuitt.comThe Liuitt Framework's Container Component.
MIT
The Requires
- php >=7.0.0
The Development Requires
by Gilberto Albino
framework component container php7 liuitt
The Liuitt Framework's Container Component.
O Componente "Container" para o Framework Liuitt., (*1)
Este componente é utilizado para Injeção de Dependências de uma forma simples e prática., (*2)
Veja os exemplos a seguir para tirar suas conclusões!, (*3)
Para instalar este Componente via Composer, execute o comando:, (*4)
composer require liuitt/fw-component-container --prefer-dist dev-master
IMPORTANTE Verifique se você precisa de permissão para utilizar o composer., (*5)
Uma vez instalado, lembre-se de certificar se o Autoloader do Composer está incluído em seu script., (*6)
include 'vendor/autoload.php';
Para fins didáticos de ilustração, todos os exemplos documentados a seguir utilizam duas classes simples:, (*7)
class Produto { private $modelo; private $fabricante; public function __construct($modelo, $fabricante) { $this->modelo = $modelo; $this->fabricante = $fabricante; } } class Carrinho { private $produto; public function __construct(Produto $produto) { echo var_export($produto, true); } }
Para utilizar basta instanciar o Componente Container sem passar argumentos para o Construtor:, (*8)
use Liuitt\Component\Container; $container = new Container();
Para registrar um objeto informe um "Alias" que será usado posteriormente para "resolver|recuperar" o objeto e uma Função Anônima:, (*9)
$container->register('Celular', function(){ return new Produto('Nokia 1520', 'Microsoft'); });
No exemplo acima, foi criado um Registro com o nome 'Celular', que retornará um objeto Produto com modelo Nokia 1520 e fabricante Microsoft., (*10)
Alternativamene você poderá utilizar chamadas estáticas:, (*11)
Container::register('Tablet', function(){ return new Produto('Asus Fonepad 7', 'Asus'); });
Para resolver um Registro você deverá informar o nome registrado para o mesmo:, (*12)
$celular = $container->resolve('Celular');
ou estaticamente:, (*13)
$tablet = Container::resolve('Tablet');
Inspecionando as variáveis $celular e $tablet,, (*14)
echo '<pre>'; echo var_export($celular, true) . PHP_EOL; echo var_export($tablet, true) . PHP_EOL;
você deverá ver algo como:, (*15)
Produto::__set_state(array( 'modelo' => 'Nokia 1520', 'fabricante' => 'Microsoft', )) Produto::__set_state(array( 'modelo' => 'Asus Fonepad 7', 'fabricante' => 'Asus', ))
Permite passar argumentos no momento em que um Registro é resolvido. No entanto, estes DEVEM ser informados na Função Anônima no momento que algo é registrado., (*16)
Registrando com argumentos anonimamente, (*17)
Container::register('Celulares', function($modelo, $fabricante){ return new Produto($modelo, $fabricante); });
Resolvendo com argumentos, (*18)
$iphone = $container->resolveWith('Celulares', ['iPhone S6', 'Apple'])
ou estaticamente, (*19)
$galaxy = Container::resolveWith('Celulares', ['Samsung Galaxy', 'Samsung']);
Inspecionando as variáveis $iphone e $galaxy,, (*20)
echo var_export($iphone, true) . PHP_EOL; echo var_export($galaxy, true) . PHP_EOL;
você deverá ver algo como:, (*21)
Produto::__set_state(array( 'modelo' => 'iPhone S6', 'fabricante' => 'Apple', )) Produto::__set_state(array( 'modelo' => 'Samsung Galaxy', 'fabricante' => 'Samsung', ))
The Liuitt Framework's Container Component.
MIT
framework component container php7 liuitt