Jump to content

Archived

This topic is now archived and is closed to further replies.

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.

Share this post


Link to post
Share on other 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].

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.