public function __construct($template = '', array $data = array())
{
if ($template !== '') {
$this->setTemplate($template);
}
if (!empty($data)) {
foreach ($data as $name => $value) {
$this->$name = $value;
}
}
}
erhielt diese vom DevShed zusammengesetzten Ansicht Tutorial (http://www.devshed.com/c/a/PHP/PHP-Composite-View-Design-Pattern-Introducing- the-Schlüssel-Konzepte/1 /). Jedenfalls bin ich etwas verwirrt, $this->$name = $value;
Aussage.PHP-Code: Verwendung dieses Stichwort
Normalerweise verwende ich $this
für Klasseneigenschaften und/oder beim Aufrufen von Klassenmethoden innerhalb der Klasse. Plus die Aussage haben zwei $
's. Was ist komisch! Also ist $this->$name = $value
bezogen auf die in der foreach-Schleife definierte $name
? Wenn ja, kann jemand diese Verwendung oder Logik dahinter erklären?
Vielen Dank im Voraus.
Hier stimmt, aber nur wahr, wenn 'name' nicht als Grundbesitz existiert. In diesem Fall werden die magischen Eigenschaften nicht aufgerufen. – KingCrunch
@KingCrunch - Ja, das ist wahr, wird meine Antwort bearbeiten, um es ein wenig klarer zu machen – mrwooster
Ich denke, ich habe es. Nachdem ich mit der AbstractView-Klasse herumgespielt habe. Es scheint, dass sich $ this -> $ name auf einen dynamisch erstellten $ name von __set bezieht. Wenn also beispielsweise eine Klasseneigenschaft in der Klasse nicht explizit definiert wird, kann ein Benutzer grundsätzlich folgendes tun: $ foo = new AbstractView; $ foo-> bar = 'stuff' ;, so dass die __set-Funktion aufgerufen wird und eine bar-Klasseneigenschaft für die abstractview-Klasse erstellt wird. Und $ this -> $ name = $ value-Anweisung bezieht sich auf die Variable $ name, einen Platzhalter, der in den anderen magischen Methoden verwendet wird, die durch die Klasse AbstractView definiert sind, daher das extra $. Ich danke dir sehr! – mythicalprogrammer