35 votes

Quand utiliser un modificateur statique en PHP

En faisant quelques revues de code ces derniers temps, je suis tombé sur un certain nombre de classes contenant un nombre important de méthodes statiques ... et je n'arrive pas à comprendre pourquoi? D'où ma question:

Quelles sont les meilleures pratiques concernant l’utilisation de méthodes statiques en PHP?

Quand voudrait-on les utiliser et quand ne devrait-on pas les utiliser?

Quelles sont les différences spécifiques dans la manière dont l'exécution gère les méthodes statiques? Affectent-ils les performances ou l’empreinte mémoire?

23voto

Imran Points 20117

Faire quelques révisions de code dernièrement, je suis tombé sur un certain nombre de classes qui ont un certain nombre de méthodes statiques en eux... et je n'arrive pas à comprendre pourquoi

PHP n'a pas les espaces de noms avant 5.3, de sorte que toutes les fonctions/variables serait dans la portée globale, à moins qu'ils appartenaient à une classe. Les mettre dans une classe en tant que membres statiques est une solution de contournement pour ne pas avoir des espaces de noms (et c'est probablement la raison pour laquelle vous l'avez vu dans nombre "significatif")

Généralement, ils sont utilisés pour des fonctions qui ne sont pas très utiles dans des objets individuels, mais a une certaine utilisation au niveau de la classe (comme dit dans d'autres réponses)

7voto

Russell Davis Points 2949

La meilleure pratique est d'éviter de les utiliser chaque fois que possible, parce qu'ils tuent la testabilité et la maintenabilité. Deux lectures grande des précisions:

PRÉCISIONS: Il semble y avoir beaucoup de confusion sur cette question. L'absence de l'injection de dépendance est le vrai problème. En appelant directement des méthodes statiques qui se trouve être l'une des façons les plus courantes de tomber dans ce piège.

5voto

Zed Points 27408

Les méthodes statiques sont utilisées pour

  • fonctions liées à l'ensemble des objets de la classe donnée (par exemple, motif singleton )
  • les fonctions qui ne sont liées à rien, mais qui doivent être placées dans une classe à cause de OO (par exemple des classes d'utilitaires)

4voto

La méthode statique ne nécessite pas d'instance (et peut en renvoyer une à la place) et ressemble plus ou moins à une fonction globale, à la différence qu'elle est placée dans l'espace de noms de la classe (et évite donc les conflits avec d'autres fonctions) et qu'elle a accès aux membres privés de la classe. .

Alors, utilisez-le chaque fois que vous êtes intéressé par ces propriétés de la fonction.

3voto

Henrik Opel Points 16296

Il n'y a rien de spécifique à PHP concernant l'utilisation de méthodes statiques.

Les méthodes statiques peuvent être appelées directement sur la classe - aucun objet instancié n'est nécessaire.

Ils sont donc principalement utilisés pour les méthodes liées à la fonctionnalité des classes, mais ne nécessitent pas qu'une instance existante soit utilisée pour un autre code.

Un exemple courant serait une méthode de comparaison personnalisée qui peut être transmise à la fonction uasort (), par exemple, pour trier un tableau d'objets du type de la classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X