Můžeš lépe popsat, o co ti jde?
Když pominu můj původní dotaz, který stejně směřoval k tomuto problému, tak jde o to, že kámen úrazu je to, že
se nedají volat z metody __toString() jiné metody, teda dají ale změny se neprojeví v objektu..
Třeba tohle vrátí výsledek správně - nastaveno : 2
class A{
public $v=1;
public function nastav(){
$this->v=2;
return 'nastaveno : ';
}
}
class B{
public function __construct($a){
$this->a=$a;
$this->r=$this->a->nastav();
}
public function __toString(){
return $this->r;
}
}
class C{
public function __construct (){
$this->a=new A();
$this->b=new B($this->a);
}
public function __toString(){
return $this->b.$this->a->v;
}
}
$c=new C();
echo $c;
no a tohle vrátí výsledek špatně - nastaveno : 1, a to jenom proto, že jsem to volal z metody __toString()
class A{
public $v=1;
public function nastav(){
$this->v=2;
return 'nastaveno : ';
}
}
class B{
public function __construct($a){
$this->a=$a;
}
public function __toString(){
return $this->r=$this->a->nastav();
}
}
class C{
public function __construct (){
$this->a=new A();
$this->b=new B($this->a);
}
public function __toString(){
return $this->b.$this->a->v;
}
}
$c=new C();
echo $c;