2010-01-19 7 views
0

Possible en double:
When should I use static methods in a class and what are the benefits?Fonctions/Classes statiques. Raisons?

Je travaille en PHP en ce moment.

Je travaille sur deux groupes de fonctions.

J'ai une classe qui comprend des fonctions de gestion de date.

Dans cette classe, je n'ai pas besoin de propriétés car chaque fonction/méthode est plus ou moins un utilitaire. En tant que tel, j'ai rendu les fonctions de ma classe toutes statiques.

J'ai quelques questions d'ici.

1) Quels sont les avantages de l'utilisation de méthodes statiques? Je comprends qu'il y a moins de temps de traitement parce qu'il n'y a pas d'objet. J'ai aussi entendu dire que c'est négligeable (en fonction).

2) Quels autres types de fonctions/méthodes seraient de bons candidats pour "statique" en plus des utilitaires?

Merci

+2

S'il vous plaît avant de demander la recherche prochaine: http://stackoverflow.com/questions/2080150/when-should-i-use-static-methods-in-a-class-and-what-are-the -avantages http://stackoverflow.com/questions/1299712/pourquoi-d'utiliser-les-calls-statiques-dans-php http://stackoverflow.com/questions/1316800/when-to-use-static -modifier-in-php – hobodave

+0

Votre question se lit comme si vous étiez à un niveau similaire de développement/connaissance avec PHP comme moi-même. Je ne peux pas recommander 'PHP et MySQL - Beyond the Basic' par Kevin Skoglund - assez bon marché de Lynda.com. M'a vraiment aidé à comprendre les concepts de méthodes publiques/privées/statiques. – suitedupgeek

Répondre

5

Le concept clé de l'utilisation de méthodes statiques est qu'ils sont liés à une classe, pas une instance de la classe. Une bonne directive est que ** tout ce qui nécessite un état ne convient pas pour être utilisé statiquement *.

Les méthodes utilitaires sont certainement un bon candidat pour l'utilisation statique, car elles sont souvent courtes et ne nécessitent aucun état. D'autres directives peuvent être:

  • Les entrées et les sorties ne dépendent pas de n'importe quoi.
  • La méthode n'a pas de contexte, c'est-à-dire que cela n'a aucun sens de l'associer à une instance d'un objet.
  • Une méthode/variable ne nécessite aucune différenciation entre les objets, et une seule déclaration est tout ce qui est requis. Cela s'applique principalement aux variables de classe statiques, telles qu'un compteur partagé par tous les objets instanciés.