PHP 5.2 Indirect modification of overloaded property

asm

Пофигист
PHP 5.2 Indirect modification of overloaded property

class foo {
public $bar;
function __get($var)
{
return $this->bar;
}
}

$foo = new foo;
$bar =& $foo->prop;
/* Notice: Indirect modification of overloaded property foo::$prop has no effect in filename on line n */

обьясните зачем это нововедение.
и почему теперь нельзя менять перезагруженные свойства?
 

itprog

Cruftsman
--
не так прочитал, значит нельзя, какая может быть ссылка на метод __get (ведь при = &$foo->prop; свойство 'prop' для $foo не создается), а менять перезагруженные свойства надо через __set
 

asm

Пофигист
class A {
private $bar;
function __get($var)
{
return $this->bar[$var];
}
function __set($var, $value)
{
$this->bar[$var] = $value;
}
}

class B extends A {
function init()
{
$this->bar = array();
$this->bar[] = 3;
var_dump($this->bar);
}
}

$foo = new B;
$foo->init();

пардон немного не так сформулировал...
Вот это работало в 5.1 а в 5.2
private $bar;
нельзя

-~{}~ 14.12.06 17:09:

хотя это скорее баг
http://bugs.php.net/bug.php?id=39449
 
Сверху