Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Henrique Barcelos

Wrapper para lib GD2 PHP

Recommended Posts

Gostaria de abrir este tópico para discutir a seguinte implementação:

:seta: https://github.com/henriquejpb/GdWrapper

 

É incrível como às vezes é difícil fazer um bom design no PHP por causa de características peculiares da linguagem.

 

Este projeto nada mais é do que um wrapper para a lib GD2 do PHP, para manipulação de imagens, afim de simplificar o seu uso.

 

Por hora, o que está pronto é isso que está no GitHub, estou com umas ideias já pra alterar, assim que elas amadurecerem, eu posto aqui.

 

Quem quiser fazer comentários, fique à vontade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para facilitar a compreensão, eis aqui o diagrama de classes da coisa até agora:globalclassdiagrav1.png

 

Minha ideia:

Creio que estou violando o SRP ao fazer com que as classes da hierarquia *Resource sejam responsáveis por criar e gerar a saída para os recursos de imagem.

 

Pensei em mover isso para outro lugar e ter somente uma classe Resource concreta, com apenas um construtor, recebendo o resource GD já criado.

 

Qual o meu problema agora? Dar um nome pra essas classes que seriam responsáveis por criar o recurso com base em uma imagem existente, e fornecer a saída da imagem ou para o navegador, ou para um arquivo.

 

Sugestões?

 

Pensei em algo como [inline]GdWrapper\Resource\Io\AbstractIo[/inline], [inline]GdWrapper\Resource\Io\Jpeg[/inline], [inline]GdWrapper\Resource\Io\Png[/inline], etc. que implementariam métodos como [inline]create[/inline] e [inline]save[/inline] ou [inline]output[/inline].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que o nome não convém.

Um recurso é uma coisa... "abstrata", que serve pra fazer alguma coisa, mas sozinho não faz nada, assim ele é "um só".

"Muitos", são aqueles que fazem algo com esse recurso, então apontar o namespace para Resources, dá a entender que você tem muitas bases a serem utilizadas.

Que tal se você fizesse:

GdWrapper\Resource para a classe abstrata. Apesar de não ser uma interface, ela representa um tipo, então nesse caso, violar o padrão de nomenclatura não parece ser um problema.

E daí, GdWrapper\Formats\JPEG, GdWrapper\Formats\PNG, GdWrapper\Formats\GIF... para os formatos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Refatorei todo o negócio, tornei Resource único, como vc sugeriu, eu já tinha pensado nisso ^_^.

Mais tarde posto o diagrama.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.