dedlfix: Was sind Routinen Bezeichner die vorne dran __ stehen haben?

Beitrag lesen

Tach!

die Eigenschaft vordefinierten magischen Methoden in Klassen wie __construct, __destruct, __invoke, __wakeup, __sleep und ihre Verwendung sind mir Bekannt. Ich weis aber nicht was zwei __ vor einer methode oder Funktion zusuchen haben und welchen Zweck diese erfüllen.

Das Handbuch klärt auf, auf der Seite zu den Magic Methods:

„PHP reserves all function names starting with __ as magical. It is recommended that you do not use function names with __ in PHP unless you want some documented magic functionality.“

Es ist also nur eine Namenskonvention, damit von PHP vergebene Bezeichner nicht mit denen von Verwendern zusammenfallen und in zukünftigen Versionen Probleme bereiten, falls PHP eine neue magische Methode hinzufügt.

Ich hab gelesen, dass das auch magische Funktionen/Methoden seien sollen und dass sie ausgeführt werden ohne aufgerufen worden zu sein. Ich hab mich dran versucht mit keinem Ergebnis :/.

Natürlich müssen sie zum Ausgeführtwerden auch aufgerufen werden. Nur ist es nicht der Verwender, der sie aufruft, sondern PHP ruft sie zu bestimmten Situationen auf. Du als Verwender kannst sie auch selbst aufrufen, nur ergibt das meist keinen Sinn. Es sind ansonsten ganz normale Methoden.

Was sind diese "Magischen" Routinen die nicht in Klassen vordefiniert sind und welchen Zweck erfüllen sie?

Da kenne ich nur __autoload() als einzelne Funktion.

Oder sind das Routinen nur Bezeichner aus PHP-Code Konventionen?

Ja. Es ist festgelegt, dass Methoden dieses Namens in bestimmten Situationen von PHP gesucht werden, und wenn es sie gibt, werden sie aufgeführt.

dedlfix.