Maison >développement back-end >tutoriel php >La différence d'utilisation entre les méthodes statiques php et les méthodes non statiques

La différence d'utilisation entre les méthodes statiques php et les méthodes non statiques

怪我咯
怪我咯original
2017-07-05 10:18:312467parcourir

L'éditeur suivant vous apportera une brève analyse des différences d'utilisation entre les méthodes statiques et les méthodes non statiques en PHP. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil

En programmation PHP, le mot-clé statique déclare un attribut ou une méthode qui est liée à la classe, pas à la classe. à une instance spécifique, par conséquent, ces attributs ou méthodes sont également appelés « attributs de classe » ou « méthodes de classe »

Si les autorisations Contrôle d'accès le permettent, vous n'avez pas besoin de créer la classe Object et appelez-le directement en utilisant le nom de la classe plus deux deux-points "::".

Le mot-clé static peut être utilisé pour modifier des variables et des méthodes.

Vous pouvez accéder directement aux attributs statiques et aux méthodes statiques de la classe sans instanciation.

Les propriétés et méthodesstatiques ne peuvent accéder qu'aux propriétés et méthodes statiques, mais ne peuvent pas accéder aux propriétés et méthodes non statiques. Parce que lorsque des propriétés et des méthodes statiques sont créées, il se peut qu'il n'y ait pas encore d'instances de cette classe pouvant être appelées.

Les attributs statiques n'ont qu'une seule copie en mémoire et sont partagés par toutes les instances.

Utilisez le mot-clé self:: pour accéder aux membres statiques de la classe actuelle.

Toutes les instances d'une classe partagent des propriétés statiques dans la classe.

C'est-à-dire que même s'il y a plusieurs instances dans la mémoire, il n'y a qu'une seule copie des attributs statiques.

Exemple, définissez un attribut compteur $count, définissez des modifications privées et statiques.

De cette façon, le monde extérieur ne peut pas accéder directement à l'attribut $count. Le résultat de l'exécution du programme montre également que plusieurs instances utilisent le même attribut statique $count.

<?php  
class user 
{  
 private static $count = 0 ; //记录所有用户的登录情况.  
 public function construct() {  
  self::$count = self::$count + 1;  
 }  
 public function getcount() {  
  return self::$count;  
 }  
 public function destruct() {  
  self::$count = self::$count - 1;  
 }  
}  
$user1 = new user();  
$user2 = new user();  
$user3 = new user();  
echo "now here have " . $user1->getcount() . " user";  
echo "<br />";  
unset($user3);  
echo "now here have " . $user1->getcount() . " user";  
?>


Deuxièmement, les propriétés statiques sont appelées directement

Les propriétés statiques peuvent être utilisées directement sans instanciation et peuvent être utilisées directement avant la création de la classe . utiliser.

Utilisation :

Nom de la classe : Nom de la propriété statique

<?php  
class math 
{  
 public static $pi = 3.14;  
}  
// 求一个半径3的园的面积。  
$r = 3;  
echo "半径是 $r 的面积是<br />";  
echo math::$pi * $r * $r;  
echo "<br /><br />";  
//这里我觉得 3.14 不够精确,我把它设置的更精确。  
math::$pi = 3.141592653589793;  
echo "半径是 $r 的面积是<br />";  
echo math::$pi * $r * $r;  
?>

La classe n'est pas créée et les propriétés statiques peuvent être utilisées directement. Quand les propriétés statiques sont-elles créées en mémoire ?

Je n’ai vu aucune information pertinente en php.

Citer des concepts en Java pour les expliquer devrait également être universel. Les propriétés et méthodes statiques sont créées lorsque la classe est appelée.

3. Méthodes statiques

Les méthodes statiques peuvent être utilisées directement sans que la classe soit instanciée.

La méthode utilisée est nom de classe :: nom de méthode statique

Continuez à écrire cette classe de mathématiques pour les calculs mathématiques.

Concevoir une méthode pour calculer la valeur maximale. Puisqu’il s’agit d’une opération mathématique, il n’est pas nécessaire d’instancier cette classe. Il serait beaucoup plus pratique que cette méthode puisse être reprise et utilisée.

Il s'agit d'un cours conçu uniquement pour démontrer la méthode statique. PHP fournit la fonction max() pour comparer des valeurs numériques.

<?php  
class math 
{  
 public static function max($num1, $num2) {  
  return $num1 > $num2 ? $num1 : $num2;  
 }   
}  
$a = 99;  
$b = 88;  
echo "显示 $a 和 $b 中的最大值是";  
echo "<br />";  
echo math::max($a, $b);  
echo "<br />"; 
echo "<br />"; 
echo "<br />";  
$a = 99;  
$b = 100;  
echo "显示 $a 和 $b 中的最大值是";  
echo "<br />";  
echo math::max($a,$b);  
?>

Comment une méthode statique appelle une méthode statique

Le premier exemple, lorsqu'une méthode statique appelle d'autres méthodes statiques, utilisez self::

<?php  
// 实现最大值比较的math类。  
class math 
{  
 public static function max($num1, $num2) {  
  return $num1 > $num2 ? $num1 : $num2;  
 }  
 public static function max3($num1, $num2, $num3) {  
  $num1 = self::max($num1, $num2);  
  $num2 = self::max($num2, $num3);  
  $num1 = self::max($num1, $num2);    
  return $num1;  
 }  
}  
$a = 99;  
$b = 77;  
$c = 88;  
echo "显示 $a $b $c 中的最大值是";  
echo "<br />";  
echo math::max3($a, $b, $c);  
?>

static method Appel des propriétés statiques

Utilisez self:: pour appeler les propriétés statiques de cette classe.

<?php  
//  
class circle 
{  
 public static $pi = 3.14;  
 public static function circleacreage($r) {  
  return $r * $r * self::$pi;  
 }  
}  
$r = 3;  
echo " 半径 $r 的圆的面积是 " . circle::circleacreage($r);  
?>

Les méthodes statiques ne peuvent pas appeler de propriétés non statiques. Les propriétés non statiques ne peuvent pas être appelées en utilisant self::.

<?php  
// 这个方式是错误的  
class circle 
{  
 public $pi = 3.14;  
 public static function circleacreage($r) {  
  return $r * $r * self::pi;  
 }  
}  
$r = 3;  
echo " 半径 $r 的圆的面积是 " . circle::circleacreage($r);  
?>

Vous ne pouvez pas non plus utiliser $this pour obtenir la valeur des propriétés non statiques.

Les méthodes statiques appellent des méthodes non statiques

En PHP5, l'identifiant $this ne peut pas être utilisé dans les méthodes statiques pour appeler des méthodes non statiques.

<?php 
// 实现最大值比较的math类。  
class math 
{   
 public function max($num1, $num2) {  
  echo "bad<br />";    
  return $num1 > $num2 ? $num1 : $num2;  
 }  
 public static function max3($num1, $num2, $num3) {  
  $num1 = $this->max($num1, $num2);  
  $num2 = $this->max($num2, $num3);  
  $num1 = $this->max($num1, $num2);    
  return $num1;  
 }  
}  
$a = 99;  
$b = 77;  
$c = 188;  
echo "显示 $a $b $c 中的最大值是";  
echo "<br />";  
echo math::max3($a, $b, $c); //同样的这个会报错 
?>

Lorsqu'une méthode non statique dans une classe est appelée par self::, le système convertira automatiquement cette méthode en méthode statique.

<?php  
// 实现最大值比较的math类。  
class math 
{   
 public function max($num1, $num2) {   
  return $num1 > $num2 ? $num1 : $num2;  
 }  
 public static function max3($num1, $num2, $num3) {  
  $num1 = self::max($num1, $num2);  
  $num2 = self::max($num2, $num3);  
  $num1 = self::max($num1, $num2);    
  return $num1;  
 }  
}  
$a = 99;  
$b = 77;  
$c = 188;  
echo "显示 $a $b $c 中的最大值是";  
echo "<br />";  
echo math::max3($a, $b, $c);  
?>

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