Wird isetset () __get auslösen und warum?

8
%Vor%

Scheint die Antwort ist nein, aber warum?

    
ORM 21.02.2010, 18:48
quelle

5 Antworten

19

Weil es __isset überprüft, anstatt es abzurufen es mit __get.

Es ist eine viel bessere Option, __isset aufzurufen, da es keinen Standard für das gibt, was leer ist. Vielleicht ist im Rahmen der Klasse null ein akzeptabler Wert. Sie könnten auch eine Klasse haben, die, wenn das Element nicht existiert, ein neues leeres Objekt zurückgibt, das isset($myObj->item) bricht, da in diesem Fall immer true zurückgegeben wird.

    
Yacoby 21.02.2010, 18:50
quelle
2

Es ist einfach nicht; Sie können stattdessen __isset verwenden. Dies ist hier festgelegt.

    
andrewffff 21.02.2010 18:53
quelle
1

Nein, __get sollte nicht ausgelöst werden, wenn Sie ermitteln möchten, ob eine Eigenschaft festgelegt ist: Testen, ob eine Eigenschaft festgelegt ist, ist nicht dasselbe wie das Abrufen des Werts.

Die Verwendung von isset löst die __isset magische Methode aus.

Siehe:

Pascal MARTIN 21.02.2010 18:51
quelle
0

Die magische Funktion __get wird nur aufgerufen, wenn Sie versuchen, auf eine Eigenschaft zuzugreifen, die nicht existiert. Überprüfen, ob eine Eigenschaft vorhanden ist, ist nicht dasselbe wie das Abrufen der Eigenschaft.

    
David Snabel-Caunt 21.02.2010 18:50
quelle
0
%Vor%     
user1735111 23.02.2013 10:01
quelle

Tags und Links