Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung von Anwendungsbeispielen des statischen Schlüsselworts in Funktionen in PHP

Detaillierte Erläuterung von Anwendungsbeispielen des statischen Schlüsselworts in Funktionen in PHP

伊谢尔伦
Freigeben: 2023-03-11 13:46:02
Original
1270 Leute haben es durchsucht

Statisch ist eine statische Variable in PHP. Die Variable ist eine globale statische Variable. Welchen Einfluss hat das Hinzufügen von Statik vor der Funktion oder Variablen? ? Nun, schauen wir uns das gemeinsam an.   1) Der Beschreibung globaler Variablen (externer Variablen) wird „statisch“ vorangestellt, um eine statische globale Variable zu bilden. Globale Variablen selbst sind statische Speichermethoden, und statische globale Variablen sind natürlich auch statische Speichermethoden. Es gibt keinen Unterschied zwischen den beiden in der Art und Weise, wie sie gespeichert werden. Der Unterschied zwischen den beiden besteht darin, dass der Geltungsbereich nicht statischer globaler

-Variablen

das gesamte Quellprogramm ist. Wenn ein Quellprogramm aus mehreren Quelldateien besteht, sind nicht statische globale Variablen in jeder Quelldatei gültig. Statische globale Variablen beschränken ihren Gültigkeitsbereich, d. h. sie sind nur innerhalb der Quelldatei gültig, in der die Variable definiert ist, und können nicht in anderen Quelldateien desselben Quellprogramms verwendet werden. Da der Umfang statischer globaler Variablen auf eine Quelldatei beschränkt ist und nur von Funktionen in dieser Quelldatei gemeinsam genutzt werden kann, können Fehler in anderen Quelldateien vermieden werden. 2) Aus der obigen Analyse ist ersichtlich, dass die Änderung einer lokalen Variablen in eine statische Variable ihre Speichermethode und ihre Lebensdauer ändert. Wenn Sie eine globale Variable in eine statische Variable ändern, ändert sich ihr Gültigkeitsbereich und schränkt ihren Verwendungsbereich ein. ​

3) Die statische Funktion unterscheidet sich vom normalen

Funktionsumfang

, nur in dieser Datei. Funktionen, die nur in der aktuellen Quelldatei verwendet werden, sollten als interne Funktionen (statisch) deklariert werden und interne Funktionen sollten in der aktuellen Quelldatei beschrieben und definiert werden. Für Funktionen, die außerhalb der aktuellen Quelldatei verwendet werden können, sollten sie in einer Header-Datei angegeben werden. Die Quelldateien, die diese Funktionen verwenden möchten, müssen diese Header-Datei enthalten. Nach PHP5.3.0 können wir eine verwenden Variable zum dynamischen Aufrufen der Art. Der Wert dieser Variablen darf jedoch nicht die Schlüsselwörter self, parent oder static sein.

Beispiel #1 Beispiel für einen statischen Member-Code

Beispiel #2 Beispiel für einen statischen Methodencode
<?php
class Foo
{
    public static $my_static = &#39;foo&#39;;
    public function staticValue() {
       return self::$my_static;
    }
}
class Bar extends Foo
{
    public function fooStatic() {
        return parent::$my_static;
    }
}

print Foo::$my_static . " ";
$foo = new Foo();
print $foo->staticValue() . " ";
print $foo->my_static . " ";      // Undefined "Property" my_static
print $foo::$my_static . " ";
$classname = &#39;Foo&#39;;
print $classname::$my_static . " "; // PHP 5.3.0之后可以动态调用
print Bar::$my_static . " ";
$bar = new Bar();
print $bar->fooStatic() . " ";
?>
Nach dem Login kopieren

Über das
<?php
class Foo {
    public static function aStaticMethod() {
        // ...
    }
}
Foo::aStaticMethod();
$classname = &#39;Foo&#39;;
$classname::aStaticMethod(); // As of PHP 5.3.0
?>
Nach dem Login kopieren
Static-Schlüsselwort

im Klasse Für die Verwendung in gibt das PHP-Handbuch die folgenden Konventionen an: 1. Deklarieren Sie Klassenmitglieder oder Methoden als statisch, und Sie können direkt darauf zugreifen, ohne die Klasse zu instanziieren. Auf statische Mitglieder (mit Ausnahme statischer Methoden) kann nicht über ein Objekt zugegriffen werden.

2. Da statische Methoden nicht über Objekte aufgerufen werden müssen, ist die Pseudovariable $this in statischen Methoden nicht verfügbar.

3. Auf statische Eigenschaften können Objekte nicht über den ->-Operator zugreifen.

4. Der Aufruf einer nicht statischen Methode mit der Methode :: führt zu einem Fehler auf E_STRICT-Ebene.
Konzentrieren wir uns nun auf Artikel 4.
Betriebsumgebung: (Win32) PHP/5.3.3

Die Funktion des statischen Schlüsselworts:
class Foo{       
    public static $my_static = &#39;foo&#39;;//声明一个静态成员  
    public function staticValue() {//静态方法  
       return self::$my_static;//  
    }  
    public function run(){//非静态方法  
      return "abc <br>";  
    }  
    public  function callrun() {  
        return self::run();//用self::方式调用一个非静态方法  
             
    }  
      
}  
     
echo Foo::$my_static . "<br >";  
     
echo Foo::run();//用className::方法名调用非静态方法  
echo Foo::callrun();
Nach dem Login kopieren

Der Anwendungsbereich statischer Variablen in PHP ist breiter Fügen Sie nicht nur den statischen Modifikator vor einer Klasse, Methode oder Variablen hinzu. Wir können sogar das statische Schlüsselwort zu den Variablen innerhalb der Funktion hinzufügen. Der Wert einer Variablen mit dem hinzugefügten statischen Modifikator geht auch nach der Ausführung der Funktion nicht verloren. Das heißt, die Variable merkt sich beim nächsten Aufruf dieser Funktion weiterhin ihren ursprünglichen Wert.



Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Anwendungsbeispielen des statischen Schlüsselworts in Funktionen in PHP. 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