
Olá pessoas ... e bots.
Não muito tempo atrás estava portanto um projeto mais antigo de VBScript para PHP, afim de primeiro trazer as funcionalidades já existentes para então aprimorá-lo com recursos de uma linguagem decente. No meio do desenvolvimento, me vi numa situação em que mesmo com o moderno PHP 7 não tinha um conveniente recurso do C# com o qual me acostumei muito: inicializador de objetos, que permite criar instâncias já passando valores para os campos que quiser.
Para deixar claro o quanto isso faz falta, segue um exemplo da inicialização de um objeto em PHP (sem apelar para construtores especializados):
Normalmente programadores usam alguns métodos para evitar fazer esse trabalho várias vezes em códigos, como:
- Função para alimentar o objeto
Encapsular a lógica de criação de objeto num único lugar - Construtor especializado
Criar o objeto já recebendo/calculando valores de propriedades - Valores padrão pré estabelecidos no construtor
Cada instância vir com valores já determinados
Já no outro lado da terra da programação, o C# permite inicializar objetos de forma bem mais simples:
Como esse recurso ainda não foi oficialmente adicionado ao PHP, fiz minha própria biblioteca para implementar inicializadores de objetos em PHP puro, através de Traits (recurso que permite compartilhar funcionalidades entre classes sem usar herança).
Segue o exemplo prático que uso para testar a biblioteca a cada mudança/atualização:
Como você pode reparar, o código para inicializar os objetos (linhas 32 - 39) fica mais simples e direto dessa forma. Por baixo dos panos é utilizado um recurso bastante leve: um construtor padrão que copia os valores de um objeto ou array recebido, de acordo com o nome de propriedade ou chave do array.
Esse projeto está disponível no meu portfólio no GitHub, em duas edições distintas:
- Para Produção
Usa declarações de tipo para restringir tipo de argumento passado para o inicializador
Requer PHP 7.2.0 ou superior - Maior Compatibilidade
Restringe tipo de argumento passado para o inicializador por funções do PHP
Requer PHP 5.4 ou superior
E se quiser fazer alguma contribuição a este desenvolvedor independente, fique à vontade. :)
Comentários
Postar um comentário