PHP Klassen Property Sichtbarkeit und Definition

Problem:

Leider lassen sich im Defaultzustand von Klassen Properys von Außen in die Instanzen schleußen.

class Start{}

// erste Instanziiierung
$s = new Start();
var_dump( $s );

// undefinierte Property-Zuweisung
$s->x='tester';
var_dump( $s->x );

Ausgabe:

object(Umrechner\Start)#2 (0) { } string(6) "tester"


Lösung:

Um dieses oben beschriebene Verhalten abzustellen kann man z.B. die magische Methode __set() überschreiben.


class Start{
public function __set($x,$y){}
}

// erste Instanziiierung
$s = new Start();
var_dump( $s );

// undefinierte Property-Zuweisung
$s->x='tester';
var_dump( $s->x );

Ausgabe:

object(Umrechner\Start)#2 (0) { } NULL