Heim Backend-Entwicklung PHP-Tutorial Welche Funktionen haben statische Variablen in PHP?

Welche Funktionen haben statische Variablen in PHP?

Jun 06, 2018 am 11:42 AM

Dieser Artikel stellt hauptsächlich die Rolle statischer Variablen in PHP vor. Ich hoffe, dass er für alle hilfreich ist.

Empfohlenes Handbuch:php vollständiges Handbuch zum Selbststudium

Statische Variablen existieren nur innerhalb des Funktionsumfangs, d. h. Nur statische Variablen. Live auf dem Stapel.

Allgemeine Variablen innerhalb von Funktionen werden nach Funktionsende freigegeben, z. B. lokale Variablen, statische Variablen jedoch nicht.

Das heißt, der Wert der Variablen bleibt beim nächsten Aufruf dieser Funktion erhalten.

Solange das Schlüsselwort static vor der Variablen hinzugefügt wird, wird die Variable zu einer statischen Variablen.

<?php
  function test()
  {
    static $nm = ;
    $nm = $nm * ;
    print $nm."<br />";
  }
  // 第一次执行,$nm = 
  test();
  // 第一次执行,$nm = 
  test();
  // 第一次执行,$nm = 
  test();
?>
Nach dem Login kopieren

Ergebnisse der Programmausführung:

1
2
2
4
3
8
Nach dem Login kopieren

Nachdem die Funktion test() ausgeführt wurde, wird der Wert der Variablen $nm gespeichert.

Statische Eigenschaften werden häufig in Klassen verwendet, z. B. statische Mitglieder und statische Methoden.

Empfohlene verwandte Artikel:
1.Wann werden statische PHP-Variablen zerstört
2.Was sind die Unterschiede zwischen statischen Variablen und globalen Variablen in PHP?
Ähnliche Videoempfehlungen:
1.Dugu Jiujian (4)_PHP-Video-Tutorial

Programmliste: Statische Mitglieder der Klasse

Die statische Variable $nm gehört zur Klasse nowamagic, nicht zu einer Instanz der Klasse. Diese Variable ist für alle Instanzen gültig.

:: ist der Bereichsbeschränkungsoperator. Der Bereich self wird hier anstelle des Bereichs $this verwendet. Der Bereich $this repräsentiert nur die aktuelle Instanz der Klasse und self:: repräsentiert die Klasse selbst.

<?php
  class nowamagic
  {
    public static $nm = ;
    function nmMethod()
    {
      self::$nm += ;
      echo self::$nm . &#39;<br />&#39;;
    }
  }
  $nmInstance = new nowamagic();
  $nmInstance -> nmMethod();
  $nmInstance = new nowamagic();
  $nmInstance -> nmMethod();
?>
Nach dem Login kopieren

Ergebnis der Programmausführung:

1
3
2
5
Nach dem Login kopieren

Programmliste: Statisches Attribut

<?php
  class NowaMagic
  {
    public static $nm = &#39;www.nowamagic.net&#39;;
    public function nmMethod()
    {
      return self::$nm;
    }
  }
  class Article extends NowaMagic
  {
    public function articleMethod()
    {
      return parent::$nm;
    }
  }
  // 通过作用于限定操作符访问静态变量
  print NowaMagic::$nm . "<br />";
  // 调用类的方法
  $nowamagic = new NowaMagic();
  print $nowamagic->nmMethod() . "<br />";
  print Article::$nm . "<br />";
  $nmArticle = new Article();
  print $nmArticle->nmMethod() . "<br />";
?>
Nach dem Login kopieren

Ergebnis der Programmausführung:

www.nowamagic.net
www.nowamagic.net
www.nowamagic.net
www.nowamagic.net
Nach dem Login kopieren

Programmliste: Einfacher statischer Konstruktor

PHP verfügt möglicherweise nicht über einen statischen Konstruktor. Es gibt eine sehr einfache Methode zum Aufrufen der Klasse die Klassendefinition) )Methode.

<?php
function Demonstration()
{
  return &#39;This is the result of demonstration()&#39;;
}
class MyStaticClass
{
  //public static $MyStaticVar = Demonstration(); //!!! FAILS: syntax error
  public static $MyStaticVar = null;
  public static function MyStaticInit()
  {
    //this is the static constructor
    //because in a function, everything is allowed, including initializing using other functions
    self::$MyStaticVar = Demonstration();
  }
} MyStaticClass::MyStaticInit(); //Call the static constructor
echo MyStaticClass::$MyStaticVar;
//This is the result of demonstration()
?>
Nach dem Login kopieren

Ergebnisse der Programmausführung:

This is the result of demonstration()
Nach dem Login kopieren

Das Folgende ist eine Einführung in die Verwendung von statischen PHP-Variablen

Das Schlüsselwort static ist in C# sehr verbreitet programming , das als Modifikator verwendet wird, um statische Member zu deklarieren, die zum Typ selbst und nicht zu einem bestimmten Objekt gehören. Der statische Modifikator kann für Klassen, Felder, Methoden, Eigenschaften, Operatoren, Ereignisse und Konstruktoren verwendet werden, jedoch nicht für Indexer, Destruktoren oder andere Typen als Klassen.

Als statisch deklarierte Klassen, Funktionen und Variablen können nicht auf Instanzmethoden oder -variablen verweisen. Sobald der statische Modifikator einer Klasse in C# hinzugefügt wird, müssen außerdem alle darin enthaltenen Variablen und Methoden statisch sein. Statische Variablen und Methoden müssen über Klassennamen und nicht über Instanzobjekte referenziert werden.

Was sind also die Unterschiede zwischen dem Schlüsselwort static in PHP und C#?

Deklarationsumfang

Im Vergleich zu C# ist der Anwendungsbereich statischer Variablen in PHP breiter. Wir können nicht nur den statischen Modifikator vor einer Klasse, Methode oder Variable hinzufügen , wir Sie können das Schlüsselwort static sogar zu den internen Variablen 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. Beispiel:

<?php
function test()
{
  static $var=;
  $var+=;
  echo $var.&#39; &#39;;
}
test();
test();
test();
?>
Nach dem Login kopieren

Das laufende Ergebnis lautet wie folgt:

3 5 7
Nach dem Login kopieren

Hier ist zu beachten, dass die Zuweisungsoperation der Variablen nur aufgerufen wird, wenn die Variable zum ersten Mal initialisiert wird . Danach wird die Funktion ausgeführt. Während des Vorgangs wird dieser Vorgang nicht aufgerufen.

Da Funktionen in PHP im Gegensatz zu C# auch erstklassige Bürger sind, können wir Funktionen direkt definieren und sie direkt an einer beliebigen Stelle im Code aufrufen, was JavaScript etwas ähnelt. Daher sind statische Funktionsvariablen derzeit nützlicher als die Definition globaler Variablen, wodurch Konflikte vermieden werden können, die durch wiederholte Definitionen von Variablen verursacht werden.

Da Funktionen in C# nicht direkt definiert und aufgerufen werden können, müssen sie in einer Klasse gehostet werden. Wenn die Funktion also statische Variablen erfordert, müssen wir sie nur in der Klasse definieren, um den gleichen Effekt zu erzielen.

Methode aufrufen

In C# ist die Art und Weise, wie wir statische Mitglieder aufrufen, sehr einfach und konsistent, da statische Mitglieder nicht zu Instanzobjekten gehören, also ob es sich um Methoden handelt oder Variablen, C#-Zugriff auf seine statischen Mitglieder erfolgt immer über Klassenname.Methode (Variable).

Und in C# können statische Funktionen nicht als virtuelle Methoden festgelegt oder überschrieben werden. PHP bietet hierfür eine flexiblere und vielfältigere Unterstützung.

Zuallererst wissen wir, dass der Aufruf von Instanzmethoden in PHP über Folgendes aufgerufen wird:

someobj->someFun(), können wir also statische Funktionen über SomeClass-> wie C# aufrufen? Was ist mit someFun()-Aufrufen?

Die Antwort ist nein. In PHP kann der Aufruf statischer Member nur über :: erfolgen, wie zum Beispiel: SomeClass::someFun().

<?php
class TestC
{
  public static $var=;
  public $var=;
  function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
    echo $this->var.&#39; &#39;;
  }
  public static function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
  }
}
$t=new TestC();
$t->t();
TestC::t();
?>
Nach dem Login kopieren
Nach dem Login kopieren

Die Laufergebnisse sind wie folgt:

3 1 5
Nach dem Login kopieren

另外一点和C#中不同的是,在类中的方法中,如果我们需要调用静态变量,必须通过self::$somVar静态变量(注意变量前面的$符号,实例变量不需要),而调用静态方法则为self::someFun()(这里不需要$符号)。如上例。

另外,与C#最大的不同之处就是,PHP中,子类是可以覆盖父类的静态函数或变量的,不仅如此,(站在C#程序员的角度来看,我觉得PHP这点反而将事情搞复杂了),由于默认self::staticFun()调用的是子类的静态函数,这个时候如果我们想调用父类的静态变量怎么办呢?

这里PHP提供了额外的parent来调用基类的静态成员。如:

<?php
class TestC
{
  public static $var=;
  public $var=;
  function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
    echo $this->var.&#39; &#39;;
  }
  public static function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
  }
}
$t=new TestC();
$t->t();
TestC::t();
?>
Nach dem Login kopieren
Nach dem Login kopieren

运行结果如下:

3 5 ‘Hello&#39;
Nach dem Login kopieren

最好,根据上面的例子我们很容易想到,子类访问父类可以使用parent关键字,那么父类如何访问子类的静态方法呢?这里给出static的另外一个用法,这里如果将调用的静态方法前面的作用域换成static的话,PHP会根据该类的继承层次来计算最终的静态方法。如:

<?php
class Test
{
  function t()
  {
    static::t();
  }
  public static function t()
  {
    echo self::&#39;Test &#39;;
  }
}
class Test extends Test
{
  static function t()
  {
    echo self::&#39;Test &#39;;
  }
}
$t=new Test();
$t->t();
Test::t();
?>
Nach dem Login kopieren

运行结果如下:

Test2 Test2
Nach dem Login kopieren

这里t实例在t1方法调用t2静态方法时,会根据其实例找到最终的静态方法并输出Test2。

相关推荐:

PHP中数组处理函数的功能

PHP获取目录下文件

PHP中each及list函数的使用技巧

Das obige ist der detaillierte Inhalt vonWelche Funktionen haben statische Variablen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) 11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) Mar 03, 2025 am 10:49 AM

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

Einführung in die Instagram -API Einführung in die Instagram -API Mar 02, 2025 am 09:32 AM

Nach seiner hochkarätigen Akquisition durch Facebook im Jahr 2012 nahm Instagram zwei APIs für den Einsatz von Drittanbietern ein. Dies sind die Instagram -Graph -API und die Instagram Basic Display -API. Ein Entwickler, der eine App erstellt, die Informationen von a benötigt

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Mar 04, 2025 am 09:33 AM

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Ankündigung von 2025 PHP Situation Survey Ankündigung von 2025 PHP Situation Survey Mar 03, 2025 pm 04:20 PM

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio

See all articles