2017 © Pedro Peláez
 

library fw-component-container

The Liuitt Framework's Container Component.

image

liuitt/fw-component-container

The Liuitt Framework's Container Component.

  • Friday, February 26, 2016
  • by liuitt
  • Repository
  • 1 Watchers
  • 0 Stars
  • 5 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Liuitt Container

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)

Instalação via Composer

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)

Utilização

Uma vez instalado, lembre-se de certificar se o Autoloader do Composer está incluído em seu script., (*6)

include 'vendor/autoload.php';

Exemplos

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);
    }
}

Container::__construct()

Para utilizar basta instanciar o Componente Container sem passar argumentos para o Construtor:, (*8)

use Liuitt\Component\Container;
$container = new Container();

Container::register(String $alias, Callback $callback)

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');
});

Container::resolve(String $alias)

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',
))

Container::resolveWith(String $alias, Array $args)

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 Versions

26/02 2016

dev-master

9999999-dev http://liuitt.com

The Liuitt Framework's Container Component.

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

The Development Requires

by Gilberto Albino

framework component container php7 liuitt