Pergunta

Qual é a melhor maneira de lidar com as funções "utilitárias" em uma estrutura OOP PHP? No momento, apenas temos um arquivo com várias funções necessárias em todo o sistema. (Por exemplo, um distribute() Função que aceita um valor e uma matriz e retorna uma matriz com o valor distribuído nas mesmas proporções e mesmas chaves que a matriz de entrada.)

Eu sempre me senti "sujo" usando isso porque não é orientado a objetos. É melhor prática movê -las para várias classes como métodos estáticos, ou é apenas uma solução alternativa semântica? Ou haverá apenas um nível em uma estrutura em que algumas coisas vão ficar fora da estrutura OOP?

Foi útil?

Solução

Eu sempre fui mais pragmático sobre perguntas como essas.

Se você quiser ficar cheio, obviamente deve colocá-las nas aulas. No entanto, essas classes serão apenas aulas de contêineres, porque elas realmente não representam objetos de nenhum tipo.

Além disso: o uso de classes exigiria que você tivesse uma instância dessa classe, usando o padrão singleton ou declarando todas as funções estáticas. O primeiro é mais lento (ok, pode não ser muito, mas em uma grande estrutura coisas como essas também ficam grandes - especialmente em idiomas interpretados como o PHP), enquanto o segundo e o terceiro são simplesmente inúteis e simplesmente um invólucro OOP Para um conjunto de funções (especialmente a terceira abordagem).

EDITAR: Sente-te à vontade para me provar que estou errado. Eu posso ser. Não sou muito experiente e sempre vi dessa maneira, mas posso estar errado.

Outras dicas

Eu costumo fazer um Util() A classe que contém apenas métodos estáticos, não tem atributos e não é herdada. Essencialmente, ele atua como um "espaço para nome" para várias funções de utilidade. Vou permitir que essa classe cresça em tamanho, mas ocasionalmente dividirei os métodos em suas próprias classes, se estiver claro que esses métodos são projetados apenas para trabalhar com certos tipos de dados ou se estiver claro que um grupo de métodos relacionados deve ser agrupado em uma classe junto com, talvez, alguns atributos.

Eu acho que é perfeitamente bom desviar-se das práticas puramente OOP, desde que o código que se desvie seja bem organizado e não esteja criando falhas arquitetônicas em seu sistema que dificultam a compreensão e a manutenção.

Eu sempre penso nas funções de utilidade como extensões das funções PHP padrão. Eles não são orientados a objetos porque você realmente não se beneficia de fazê -los OO.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top