Heute lese ich ein Tutorial über MVC, der Kerl war Magie-Methoden (__get & __set()), um einen privaten Mitglied Wert zugreifen. (LINK) Zuerst war ich verwirrt, was __get und __set tun, aber nach dem Lesen im Internet fand ich schließlich heraus, dass diese Methoden aufgerufen werden, wenn das Mitglied von außen nicht zugänglich ist. Bisher ...Was ist der Sinn der __get() & __set() Methoden
Aber es macht keinen Sinn Code wie diese zu haben:
class Foo { private $bar; public __set($value) { $this->bar = $value; } public __get() { return $this->bar; } }
I normalen Getter und Setter Ich denke, verwenden - Die IMO einen Weg leichter zu verstehen:
Wenn Sie das Mitglied außerhalb mit __get & __set zugreifen möchten, können Sie auch das Mitglied öffentlich machen - also verstehe ich nicht, was es Sinn macht. Können Sie mir (vielleicht mit einem Beispiel) sagen, was der Sinn dieser beiden Methoden ist?
Sehen Sie nichts, was Sie als Beispiel in den von Ihnen bereitgestellten Link geschrieben haben. Er verwendet ein Array, nicht eine einzige Eigenschaft '$ this-> vars [$ index] = $ value ; '. Daher ist die Bedeutung der Verwendung von '__set' und' __get' für den Zugriff auf Schlüssel in einem Index ziemlich echt. Oder möchten Sie für jeden Schlüssel einen Accessor schreiben? – dbf
Das ist wahr, aber ich habe das auch in verschiedenen Tutorials gesehen .... Und Sie können auch normale Getter und Setter verwenden, um ein Array zu setzen, nicht wahr? – Petschko
Wie ich geschrieben habe, ist es legitim, sie zu benutzen, ich habe nicht gesagt, dass es klug ist, sie zu benutzen;) – dbf