EtDirloth [1875]: vzhladom na to, ze tu referenciu som si potreboval uchovavat v private property nejkej triedy, skusil som to s malou asistenciou doslovne pre triedy a membrov - a ono to funguje tak, ako ma (tzn. tak, ako potrebujem):
class a { // cokolvek
private $a=5;
function p() {
echo $this->a++."\n";
}
}
class b {
private $RefNaA;
public function __construct(&$refA) {
$this->SetRef($refA);
// $this->RefNaA =& $refA; // funguje samozrejme aj toto
}
public function SetRef(&$refA) {
$this->RefNaA =& $refA;
}
public function f() {
$this->RefNaA->p();
}
}
$a = new a(); // spravim si instanciu a
$b = new b($a); // spravim si instanciu b, odovzdam referenciu na $a
$a->p(); // udeju sa nejake zmeny v instancii a,
$b->f(); // aby som mohol dokazat, ze som si uchoval referenciu a nie kopiu instancie
kazdopadne zo zaujimavosti by som rad vedel, preco povodny priklad pre globalnu premennu $zd z prveho postu nefunguje
este poznamka pre uplnost k povodnej otazke: namiesto globalnej $zd som to skusal aj cez lokalnu static premennu funkcie Set() -> tiez onicom... |