Heim > Backend-Entwicklung > PHP-Problem > Warum können Klassen und Methoden in PHP nicht statisch von außen aufgerufen werden?

Warum können Klassen und Methoden in PHP nicht statisch von außen aufgerufen werden?

PHPz
Freigeben: 2023-03-24 17:52:01
Original
1304 Leute haben es durchsucht

PHP ist eine weit verbreitete Programmiersprache, die sich durch ihre prägnante und benutzerfreundliche Syntax, schnelle Entwicklungsgeschwindigkeit und Unterstützung für mehrere Datenbanken auszeichnet. Allerdings kann es bei einigen PHP-Entwicklern zu einem Problem kommen: Klassen und Methoden können nicht statisch von außen aufgerufen werden. In diesem Artikel wird dieses Problem untersucht und eine Lösung bereitgestellt.

Was ist ein statischer Anruf?

In der PHP-Entwicklung ist der statische Aufruf eine Möglichkeit, eine Klasse oder Methode direkt aufzurufen, ohne das Objekt zu instanziieren. Der Beispielcode lautet wie folgt:

class Car{
   public static function run(){
      echo "the car is running";
   }
}

// 静态调用
Car::run();
Nach dem Login kopieren

Wie oben erwähnt ist der statische Aufruf eine Möglichkeit, auf ein Klassenmitglied (Methode oder Eigenschaft) zuzugreifen, indem der Klassenname und der Doppelpunktoperator verwendet werden.

Warum kann es nicht statisch von außen aufgerufen werden?

In PHP ist der Hauptgrund, warum es nicht statisch von außen aufgerufen werden kann, die Einschränkung von Zugriffsmodifikatoren. Wenn eine Klasse oder Methode mit dem Modifikator private oder protected definiert wird, kann auf ihre Mitglieder nur innerhalb der Klasse zugegriffen werden. Daher verweigert der PHP-Interpreter bei einem externen Aufruf die entsprechende Zugriffsanforderung. privateprotected修饰符进行定义,则只有在类内部才能够访问其中的成员。因此,在外部调用时,PHP解释器将拒绝相应的访问请求。

解决方案:

如果想要在外部静态地调用类或方法,需要将它们定义为公共的(使用public

Lösung:

Wenn Sie Klassen oder Methoden statisch von außen aufrufen möchten, müssen Sie sie als öffentlich definieren (mit dem Modifikator public). Nehmen wir zum Beispiel an, wir haben eine Klasse namens MyClass, die über eine öffentliche statische Methode myMethod verfügt, die wie folgt definiert werden kann:

class MyClass{
   public static function myMethod(){
      echo "Hello World!";
   }
}
Nach dem Login kopieren
Nachdem die Methode in der Klasse definiert wurde, kann sie direkt von überall aus über den Klassennamen und dort aufgerufen werden Es ist nicht erforderlich, diese Klasse zu instanziieren. Beispielsweise kann die Methode in anderen PHP-Dateien wie folgt aufgerufen werden:

MyClass::myMethod();
Nach dem Login kopieren
Zusätzlich kann die Reflection API für den statischen Zugriff verwendet werden. Die Reflection API ist ein leistungsstarkes Tool, mit dem Informationen über Klassen und Objekte abgerufen werden können, während PHP ausgeführt wird. Der folgende Code zeigt, wie Sie die Reflection-API verwenden, um eine Klasse statisch zu instanziieren und ihre Methoden aufzurufen.

class Example{
   public function run(){
       echo "example code";
   }
}

// 使用反射API静态地调用run()函数
$class = new ReflectionClass('Example');
$method = $class->getMethod('run');
$method->invoke(null);
Nach dem Login kopieren
Im obigen Codebeispiel wird ein Verweis auf die run()-Methode durch Nutzung der ReflectionClass-Klasse und der getMethod()-Methode erhalten. Verwenden Sie dann die Methode invoke(), um die Methode aufzurufen. Beachten Sie, dass in invoke() ein Nullwert übergeben wird, da hier keine Instanziierung der Beispielklasse erforderlich ist.

Fazit

🎜🎜In der PHP-Entwicklung können externe statische Aufrufe von Klassen oder Methoden durch Zugriffsmodifikatoren eingeschränkt werden. Um dieses Problem zu lösen, müssen Sie die Klasse oder Methode als öffentlich definieren und den Klassennamen und den Doppelpunktoperator verwenden, um auf die Klassenmitglieder zuzugreifen. Darüber hinaus kann die Reflection API auch für statische Zugriffe genutzt werden. Die Kenntnis dieser Informationen kann Entwicklern helfen, die Leistungsfähigkeit von PHP besser zu nutzen. 🎜

Das obige ist der detaillierte Inhalt vonWarum können Klassen und Methoden in PHP nicht statisch von außen aufgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
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