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
Wallogit.com
2017 © Pedro Peláez
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