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

怪我咯
Libérer: 2023-03-12 17:50:02
original
2381 Les gens l'ont consulté

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";  
?>
Copier après la connexion


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;  
?>
Copier après la connexion

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);  
?>
Copier après la connexion

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);  
?>
Copier après la connexion

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);  
?>
Copier après la connexion

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);  
?>
Copier après la connexion

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); //同样的这个会报错 
?>
Copier après la connexion

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);  
?>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!