Essa lib é um container para dados aleatórios, onde imposto regras de um lado e dados do outro ele tentará executar as regras nos respectivos dados., (*1)
Instalação
composer require marcosadantas/sped-container
Classes de interesse
AbstractAttribute
SpedContainer
Interface para atributos
SpedAttribute
Como usar
$data = [
'produto' => [
'nome' => 'Produto PHP'
]
];
class ProdutoAttribute extends AbstractAttribute implements SpedAttribute
{
// O container fará a injeção automaticamente
__invoke(array $items, OutroAttributo $instancia);
}
$regras = [
ProdutosAttribute::class
]
$spedContainer = new SpedContainer($regras, $data);
$spedContainer->execute();
Desempenho
O container usa solução baseada em reflection e pra isso foi implementado o metódo getConfigCache
que retornará o array da configuração atual, caso o guarde num arquivo, o desempenho melhorará significativamente., (*2)
Injeção
Basicamente todo atributo só estará disponivel para uso depois de executado suas "regras" no entanto, antes de injetar o container se certifica e executa isto., (*3)
AbstractAttribute
Há algumas necessidades conforme implementar a interface, essa classe abstrata acabará com boa parte delas, também ela tem implementada por padrão o uso de traits para:, (*4)
Precision - numeros precisos
SanitizeString - limpeza de string
DateFormat - Formatação para UTC