Die Methode __get() wird aufgerufen, sobald ein Zugriff auf eine nicht existente Eigenschaft einer Klasse erfolgt, z.B. weil die Eigenschaft mit __set() gesetzt wurde.
<?phpclassStudent{private$name="keine Angabe";private$matrNumber=0;protected$exams=[];// Eigenschaft $exams als assoz. Arraypublicfunction__construct(string$name,int$matrNumber){$this->matrNumber=$matrNumber;$this->name=$name;}publicfunction__set(string$subject,float$grade):void{$this->exams[$subject]=$grade;}publicfunction__get(string$subject):?float{if(isset($this->exams[$subject])){return$this->exams[$subject];}else{returnnull;}}}$ute=newStudent("Ute",7201234);$ute->Internetprogrammierung=1.3;// Wert einer Eigenschaft zuweisenecho$ute->Internetprogrammierung;// Wert aus der Eigenschaft auslesen
Ausgabe: 1.3
In Zeile 30 wird nun eine Eigenschaft aufgerufen, die in der Klasse nicht deklariert ist. Somit wird nachgeschaut, ob es eine __get()-Methode gibt, die stattdessen aufgerufen wird.
Anmerkung
In Zeile 18 sehen wir mit ?float etwas Neues. Das ? vor dem float bedeutet, dass auch der Wert null zurückgegeben werden kann und ist notwendig, da ein return null in Zeile 23 steht.