Autor Zpráva
Poky
Profil
Mám tuto třídu s metodou __set_state():
class MyClass {
	public $one = 1;
	private $two = 2;
	
	public static function __set_state($params) {
		$obj = new MyClass();
		foreach ($params as $key => $value) {
			$obj->$key = $value;   //zde bych se k $obj->two neměl dostat!
		}
		return $obj;
	}
}

Když zavolám
$mc = MyClass::__set_state( array( 'one'=>10, 'two=>20' ) );

vytvoří se pomocí __set_state() objekt, který má atribut $two nastaven na 20 přesto, že metoda __set_state() by neměla mít možnost modifikovat privátní atribut. Nebo uvnitř __set_state() platí nějaká výjimka?
Poky
Profil
Nebo to je proto, že manipuluju s jednou instancí MyClass uvnitř druhé?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0