Meine Frage ist ziemlich einfach, hier ist der Kontext:
Magische Methoden
Die Funktionsnamen
__construct()
,__destruct()
,__call()
,__callStatic()
,__get()
,__set()
,__isset()
,__unset()
,__sleep()
,__wakeup()
, __toString (), __invoke (), __set_state () und __clone () sind magisch in PHP-Klassen. Sie können keine Funktionen mit diesen Namen haben irgendeinen deiner Klassen, außer du möchtest die magische Funktionalität haben mit ihnen.PHP reserviert alle Funktionsnamen, die mit __ beginnen, als magisch. Es wird empfohlen, dass Sie keine Funktionsnamen mit __ in PHP verwenden, es sei denn, Sie möchten eine dokumentierte magische Funktionalität haben.
Ich verstehe, wofür diese Methoden sind und wie sie verwendet werden. Was ich nicht verstehe ist das:
... es sei denn, Sie möchten eine dokumentierte magische Funktionalität haben.
Was heißt das überhaupt? Gibt es tatsächliche Gründe dafür, benutzerdefinierte __magicMethods()
zu erstellen?
Ich denke, dass sie nur meinen, dass es besser ist, __
nicht als Anfangsnamen für Ihre Methoden zu verwenden, da PHP diese Konvention für seine magischen Methoden reserviert hat und wenn Sie diese für eine Methode verwenden, könnte es in der Zukunft und einige magische Funktionen haben. Zumindest habe ich das verstanden.
BEARBEITEN - um noch klarer zu sein: Nehmen wir an, Sie implementieren für Ihre eigene Geschäftslogik eine Methode namens __toNumber()
. In einer zukünftigen Version von PHP wird entschieden, dass jedes Mal, wenn ein Objekt als Zahl verwendet wird (wenn Sie $result = 3 * $yourObject
verwenden), die magische Methode __toNumber()
aufgerufen wird ... Ihr Objekt wird einige "magische" Funktionen haben, selbst wenn du hast es nicht speziell hinzugefügt
Tags und Links php magic-methods