Je travaille avec PHP et je me demande à quel point il est malaisé de combiner beaucoup de fonctions dans une classe. Je suis conscient que ce n'est pas le but des classes, mais la raison pour laquelle je ferais cela est de fournir un espace de noms. Quel impact cela fait-il d'initier disons 10 classes à l'exécution d'un script PHP au lieu de disons 2 ou 3?Utilisant OOP pour combiner beaucoup de fonctions (sorte d'espace de noms) en PHP?
Répondre
Vous n'êtes peut-être pas au courant que PHP, depuis peu, a un support d'espace de noms de première classe: http://php.net/language.namespaces.
Si vous utilisez une version php < 5.3 (et vous êtes probablement, de sorte que vous ne pouvez pas utiliser les espaces de noms) que vous pouvez utiliser quelque chose comme:
<?php
class Foo {
public static function aStaticMethod() {
// ...
}
}
Foo::aStaticMethod();
?>
(copié à partir the php manual)
Je dirais que c'est une fonction d'une classe dans un sens - un regroupement de fonctionnalités. Cela n'aura aucun problème lié aux performances (vous pourriez le faire des millions de fois et vous ne le remarquerez même pas - il ne devrait y avoir aucun coût d'exécution, seulement une minute de coût d'analyse supplémentaire et c'est négligeable). Les frameworks php modernes apportent beaucoup de code et créent en interne beaucoup d'objets - je ne m'inquiéterais pas des performances php, les performances de la base de données vous toucheront presque toujours en premier. Assurez-vous que votre code est lisible et maintenable (oui, en particulier le code php;)) et si cela signifie grouper les fonctions, alors faites-le.
« 97% du temps d'optimisation prématurée est la racine de tout mal », surtout quand vous faites des pages web, et non des simulations nucléaires;)
Edit: sont php5 public et statique que, en php < 5 vous pouvez essayer:
<?php
class Foo {
function aStaticMethod() {
// don't touch $this
}
}
Foo::aStaticMethod();
?>
Si vous êtes si préoccupé par les performances que le chargement de 10 classes est trop lent, alors vous ne devriez pas utiliser PHP. À tout le moins, utilisez un cache d'opcode comme APC, puis le chargement des classes ne devrait pas être un fardeau du tout.
- 1. Fonctions variables avec espaces de noms en PHP
- 2. Noms de fonctions dynamiques Python
- 3. PHP OOP question
- 4. Remplacement des fonctions javascript en utilisant PHP
- 5. Fonctions CRUD courantes en PHP
- 6. Setters/Getters, Visibility [OOP] en PHP
- 7. Une sorte de variable statique en PHP
- 8. Comment combiner plusieurs fonctions jquery
- 9. Comment combiner deux fonctions JQuery
- 10. Actionscript 3 introspection - noms de fonctions
- 11. Combiner les polygones KML en PHP
- 12. Minimisation des espaces de noms pour les fonctions personnalisées
- 13. Fonctions et espaces de noms XSLT
- 14. question de style OOP
- 15. Expression régulière vs fonctions XML en PHP
- 16. C pré-processeur définissant pour les noms de fonctions générées
- 17. Noms de fichiers temporaires PHP pour les téléchargements en conflit
- 18. Javascript personnalisé "événement" écouteur, en utilisant l'implémentation du prototype OOP
- 19. Standard OOP Techniques pour la liste des projets PHP style
- 20. Formchecking fonctions dans php
- 21. Lorsque je tente de fichiers de GZIP en utilisant PHP je reçois une sorte d'erreur php liée
- 22. IIS Worker Processus utilisant beaucoup de mémoire?
- 23. Portée variable pour les fonctions de rappel PHP
- 24. recherche de balise avec beaucoup à beaucoup de champs dans php
- 25. Fonctions de l'espace de noms de plugin jQuery
- 26. Implémenter l'interface PHP de sorte que l'instance d'objet puisse être passée en argument de type tableau?
- 27. Générer XML avec l'espace de noms URI en PHP
- 28. Comment faire pour supprimer des caractères spécifiques à partir de noms de fichiers en utilisant BASH
- 29. Performance des fonctions vides en PHP
- 30. Mise en attente de chargement vs beaucoup de requêtes avec PHP, SQLite
Presque - la dernière version stable est 5.2.8; namespaces sera en 5.3.0 – Greg
merci pour le heads-up sur celui-là! hâte de libérer ce dispositif. – thrashr888