Question

Quelle est la meilleure façon de traiter les fonctions « utilitaires » dans un framework PHP POO? En ce moment, nous avons juste un fichier avec plusieurs fonctions qui sont nécessaires dans tout le système. (Par exemple, une fonction de distribute() qui accepte une valeur et un tableau, et renvoie un tableau avec la valeur distribuée dans les mêmes proportions et les mêmes touches que le tableau d'entrée.)

Je me suis toujours senti « sale » à l'aide que parce qu'il est orienté objet pas du tout. Est-il une meilleure pratique de les livrer dans différentes classes comme méthodes statiques, ou est-ce une solution de contournement sémantique? Ou est-ce qu'il va juste être un niveau dans un cadre où des choses va tomber en dehors de la structure POO?

Était-ce utile?

La solution

J'ai toujours été plus pragmatique des questions comme celles-ci.

Si vous voulez aller plein POO, vous devez évidemment tenir ceux-ci dans les classes. Cependant, ces classes ne vont être classes de conteneurs, parce qu'ils ne représentent pas vraiment des objets de toute nature.

Aussi: en utilisant des classes, il faudrait vous avoir soit une instance de cette classe, en utilisant le modèle singleton ou en déclarant toutes les fonctions statiques. La première est plus lente (ok, peut-être pas beaucoup, mais dans un grand choses cadres comme ça se grande, aussi - en particulier dans les langues interprétées comme PHP), tandis que les deuxième et troisième sont tout simplement inutiles et simplement une enveloppe POO pour un ensemble de fonctions (en particulier la troisième approche).

EDIT : Ne hésitez pas à me prouver. Je pourrais être. Je ne suis pas trop expérimenté et vu toujours de cette façon, mais je peux me tromper.

Autres conseils

J'ai tendance à faire une classe Util() qui ne contient que des méthodes statiques, n'a pas d'attributs, et n'est pas hérité de. Pour l'essentiel, il agit comme un « espace de noms » à un tas de fonctions utilitaires. Je vais laisser cette classe de croître en taille, mais sera parfois diviser des méthodes dans leurs propres classes s'il est clair que ces méthodes sont conçues uniquement pour fonctionner avec certains types de données ou s'il est clair qu'un groupe de méthodes connexes devrait être regroupés en une classe avec, peut-être, certains attributs.

Je pense qu'il est tout à fait correct de s'écarter purement pratiques POO tant que le code qui dévie est bien organisée et ne crée pas des défauts d'architecture de votre système qui le rendent plus difficile à comprendre et à maintenir.

Je pense toujours des fonctions utilitaires comme des extensions des fonctions standard de php. Ils sont pas orienté objet parce que vous ne recevez pas vraiment un avantage de les faire OO.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top