Der Unterschied in der Verwendung zwischen statischen PHP-Methoden und nicht statischen Methoden

怪我咯
Freigeben: 2023-03-12 17:50:02
Original
2430 Leute haben es durchsucht

Der folgende Editor bietet Ihnen eine kurze Analyse der Nutzungsunterschiede zwischen statischen PHP-Methoden und nicht statischen Methoden. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf

In der PHP-Programmierung deklariert das statische Schlüsselwort ein Attribut oder eine Methode, die sich auf die Klasse bezieht, nicht auf die Klasse Relevant auf eine bestimmte Instanz beziehen, daher werden solche Attribute oder Methoden auch „Klassenattribute“ oder „Klassenmethoden“ genannt.

Wenn die Zugriffskontrolle-Berechtigungen dies zulassen, müssen Sie die Klasse nicht erstellen Objekt und rufen Sie es direkt mit dem Klassennamen plus zwei Doppelpunkten „::“ auf.

Das Schlüsselwort static kann zum Ändern von Variablen und Methoden verwendet werden.

Sie können ohne Instanziierung direkt auf die statischen Attribute und statischen Methoden in der Klasse zugreifen.

Statische Eigenschaften und Methoden können nur auf statische Eigenschaften und Methoden zugreifen, nicht jedoch auf nicht statische Eigenschaften und Methoden. Denn bei der Erstellung statischer Eigenschaften und Methoden kann es sein, dass noch keine Instanzen dieser Klasse vorhanden sind, die aufgerufen werden können.

Statische Attribute haben nur eine Kopie im Speicher und werden von allen Instanzen gemeinsam genutzt.

Verwenden Sie das Schlüsselwort self::, um auf statische Mitglieder der aktuellen Klasse zuzugreifen.

Alle Instanzen einer Klasse teilen statische Eigenschaften in der Klasse.

Das heißt, selbst wenn mehrere Instanzen im Speicher vorhanden sind, gibt es nur eine Kopie der statischen Attribute.

Beispiel: Legen Sie ein Zähler-$count-Attribut fest und legen Sie private und statische Änderungen fest.

Auf diese Weise kann die Außenwelt nicht direkt auf das $count-Attribut zugreifen. Das Ergebnis der Programmausführung zeigt auch, dass mehrere Instanzen dasselbe statische $count-Attribut verwenden.

<?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";  
?>
Nach dem Login kopieren


Zweitens werden statische Eigenschaften direkt aufgerufen

Statische Eigenschaften können direkt ohne Instanziierung verwendet werden und können direkt vor der Erstellung der Klasse verwendet werden . verwenden.

Verwendung:

Klassenname:: Name der statischen Eigenschaft

<?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;  
?>
Nach dem Login kopieren

Die Klasse wird nicht erstellt und die statischen Eigenschaften können direkt verwendet werden. Wann werden statische Eigenschaften im Speicher erstellt?

Ich habe keine relevanten Informationen in PHP gesehen.

Das Zitieren von Konzepten in Java zur Erklärung sollte ebenfalls universell sein. Statische Eigenschaften und Methoden werden beim Aufruf der Klasse erstellt.

3. Statische Methoden

Statische Methoden können direkt verwendet werden, ohne dass die Klasse instanziiert wird.

Die verwendete Methode ist Klassenname:: statischer Methodenname

Schreiben Sie diese Mathematikklasse weiter, um mathematische Berechnungen durchzuführen.

Entwerfen Sie eine Methode zur Berechnung des Maximalwerts. Da es sich um eine mathematische Operation handelt, besteht keine Notwendigkeit, diese Klasse zu instanziieren. Es wäre viel praktischer, wenn diese Methode übernommen und verwendet werden könnte.

Dies ist eine Klasse, die nur dazu dient, die statische Methode zu demonstrieren. PHP bietet die Funktion max() zum Vergleichen numerischer Werte.

<?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);  
?>
Nach dem Login kopieren

Wie eine statische Methode eine statische Methode aufruft

Das erste Beispiel: Wenn eine statische Methode andere statische Methoden aufruft, verwenden Sie 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);  
?>
Nach dem Login kopieren

static Methode Aufruf statischer Eigenschaften

Verwenden Sie self::, um die statischen Eigenschaften dieser Klasse aufzurufen.

<?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);  
?>
Nach dem Login kopieren

Statische Methoden können keine nicht statischen Eigenschaften aufrufen. Nicht statische Eigenschaften können nicht mit self:: aufgerufen werden.

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

Sie können $this auch nicht verwenden, um den Wert nicht statischer Eigenschaften zu ermitteln.

Statische Methoden rufen nicht-statische Methoden auf

In PHP5 kann der Bezeichner $this nicht in statischen Methoden verwendet werden, um nicht-statische Methoden aufzurufen.

<?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); //同样的这个会报错 
?>
Nach dem Login kopieren

Wenn eine nicht statische Methode in einer Klasse von self:: aufgerufen wird, konvertiert das System diese Methode automatisch in eine statische Methode.

<?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);  
?>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDer Unterschied in der Verwendung zwischen statischen PHP-Methoden und nicht statischen Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage