Laravel Helpers

Laravel: Instanciando classes like a boss

Danilo Lutz
2 min readOct 23, 2019

--

Outro dia estava eu e um amigo do trabalho conversando. Estávamos debatendo algumas implementações que cada um gosta de usar em conjunto com o Laravel.

Eis que ele tinha um problema que não conseguia instanciar as classes de forma que o próprio Service Container do Laravel resolvesse as Dependências a serem injetadas.

Dois dias depois estou revisando minha implementação do padrão Repository que gosto de usar com o Laravel. E além do já citado padrão também precisei implementar uma Factory, oras vejam só quem estava exatamente com o mesmo problema do meu amigo…

É, pois é, aparentemente não é nada incomum isso acontecer, mas para tudo temos uma solução.

class MyFactory
{
private static $products = [
'product1' => Product1::class,
'product2' => Product2::class,
'product3' => Product3::class,
]; public static function make(string $name)
{
if (array_has(self::$products, $name)) {
return resolve(self::$products[$name]);
}
throw new RepositoryException("Product {$name} not found in this factory.");
}
}

O grande “pulo do gato” aqui é o uso da função helper do Laravel chamada resolve() ela simplesmente resolve todas as dependências a serem injetadas e instância a sua classe, da hora né?

Isso aí pessoal por hoje é só, apenas uma dica rápida e um lembrete de que precisamos extrapolar o framework… até a próxima. 😎

Por favor, não deixem de compartilhar, comentar e deixar seu feedback.

Referências

--

--

Danilo Lutz

Obsessed for learning. OOP, PHP, C# and Python lover. Since 2003 coding...