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();
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. private
或protected
修饰符进行定义,则只有在类内部才能够访问其中的成员。因此,在外部调用时,PHP解释器将拒绝相应的访问请求。
解决方案:
如果想要在外部静态地调用类或方法,需要将它们定义为公共的(使用public
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!"; } }
MyClass::myMethod();
class Example{ public function run(){ echo "example code"; } } // 使用反射API静态地调用run()函数 $class = new ReflectionClass('Example'); $method = $class->getMethod('run'); $method->invoke(null);
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!