Maison  >  Article  >  développement back-end  >  Analyse des problèmes d'efficacité des fonctions membres statiques PHP

Analyse des problèmes d'efficacité des fonctions membres statiques PHP

伊谢尔伦
伊谢尔伦original
2017-06-30 11:15:041257parcourir

De nombreux développeurs PHP savent que l'utilisation de la fonction statique membre d'une classe est plus efficace que la fonction membre ordinaire de la classe. niveau d'application

Ce qui suit est un exemple :

<?php // php静态方法测试
header(&#39;Content-Type: text/html; charset=utf-8&#39;);
class xclass{
     public 
static
 $var1 = &#39;1111111111111111&#39;;
     public $var2 = &#39;aaaaaaaaaaaaa&#39;;
     public function construct()
    {
         $this -> var2 = &#39;bbbbbbbbbbbbbbbb&#39;;
         }
     public static function secho1()
    {
         echo self :: $var1 . &#39;<hr />&#39;;
         }
     public function secho2()
    {
         echo $this -> var2 . &#39;<hr />&#39;;
         }
     public function secho3()
    {
         echo &#39;cccccccccccccc<hr />&#39;;
         }
     }
 xclass :: secho1();
 xclass :: secho3();
 echo "------------------------------<br />";
 $xc = new xclass();
 $xc -> secho1();
 $xc -> secho2();
 ?>


En regardant attentivement l'exemple ci-dessus, vous trouverez un point intéressant après que secho1() soit défini comme. une méthode statique, dans la classe dynamique Dans l'instance d'objet, peut toujours faire référence à comme méthode dynamique, et secho3() peut également être utilisée comme fonction membre statique À partir de ce niveau, ce n'est pas difficile. pour comprendre pourquoi les fonctions membres statiques sont plus rapides que les fonctions dynamiques.

Peut-être pour des raisons de compatibilité, Il n'y a pas de distinction évidente entre les membres de classe dynamiques et statiques en PHP. Tous les membres seront traités comme des membres statiques et stockés dans une zone mémoire spécifique sans déclaration explicite dans <.>, donc appeler une fonction membre statique revient à appeler une fonction normale et est très rapide.

Mais appeler une classe dynamique est différent. Il utilise cette structure de classe comme exemple pour régénérer une instance d'

objet dans la mémoire, il y a donc un processus de plus. , ce n'est peut-être pas grave, mais pour les classes complexes, cela affecte évidemment l'efficacité.

Certaines personnes peuvent craindre que l'utilisation de méthodes statiques entraîne une utilisation excessive de la mémoire. En fait, d'après l'analyse ci-dessus, nous pouvons savoir que si vous ne déclarez pas de méthode statique, le système traitera toujours les membres comme statiques. , donc pour une méthode complètement statique, la mémoire occupée par une classe est presque la même que celle d'une classe complètement dynamique qui ne déclare pas d'objet instance. Par conséquent, pour une logique plus directe, il est recommandé d'utiliser des méthodes membres

statiques. directement. Bien sûr, certaines classes complexes ou orientées objet Pour la logique, il n'est pas impossible d'utiliser entièrement des classes statiques, mais alors le sens de la classe sera perdu Si oui, pourquoi s'embêter avec la POO ? Dans ce but, les méthodes statiques sont particulièrement adaptées aux classes logiques du modèle MVC.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn