Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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
Refatorei todo o negócio, tornei Resource único, como vc sugeriu, eu já tinha pensado nisso ^_^.
Mais tarde posto o diagrama.
Segue o diagrama da segunda versão.
O código já está atualizado no repositório.
/applications/core/interface/imageproxy/imageproxy.php?img=http://img823.imageshack.us/img823/9361/globalclassdiagramv2.png&key=33363e234001ac874a506247c0b35dd739ca97a6bde5ff9c792663285ab99436" alt="globalclassdiagramv2.png" />
Sugestões?
Para facilitar a compreensão, eis aqui o diagrama de classes da coisa até agora:/applications/core/interface/imageproxy/imageproxy.php?img=http://img571.imageshack.us/img571/9629/globalclassdiagrav1.png&key=fb483443608d142e8f766c435774f601e581dbbd9aee74ca1204b222ebcaa13d" alt="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].