Henrique Barcelos 290 Denunciar post Postado Abril 13, 2013 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
Henrique Barcelos 290 Denunciar post Postado Abril 13, 2013 Para facilitar a compreensão, eis aqui o diagrama de classes da coisa até agora: 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
Bruno Augusto 417 Denunciar post Postado Abril 13, 2013 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
Henrique Barcelos 290 Denunciar post Postado Abril 14, 2013 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
Henrique Barcelos 290 Denunciar post Postado Abril 16, 2013 Segue o diagrama da segunda versão. O código já está atualizado no repositório. Sugestões? Compartilhar este post Link para o post Compartilhar em outros sites