Autor Zpráva
karel
Profil *
ahoj všem!


class Trida{
public function __construct(){
$kkk =& new JinaTrida();
}
}

class JinaTrida{
private $prom = ‘nejaka blbost’;
public function getProm(){
return $this->prom;
}
}

class TretiTrida{
public function VolejJinouTridu(){
echo $kkk->getProm();
}
}

$prvni = new Trida;
//vytvori objekt tridy Trida, ktery ve svem konstuktoru vytvori objekt tridy JinaTrida

$druhy = new TretiTrida;
$druhy->VolejJinouTridu();

//ve sve metode vola verejnou metodu objektu $kkk tridy JinaTrida
//otazka je, jestli je objekt $kkk pristupny, kdyz jsem ho v objektu
//$prvni vytvorij jako odkaz ($kkk =& new JinaTrida())?



díky za rady a/nebo nasměrování někam (ne do pr...e ;-))
karel
Profil *
omlouvám se, odeslal jsem to omylem 2x, může to, pls někdo smazat?
karel
Profil *
... ehm, nikdo neví? napsal jsem to nejasně? :(
one_k
Profil
trochu se v tom ztraci ale urcite ti to fungovat nebude jelikoz musis definovat v kazde tride zda $kkk je public/private/protected/abstract
jinak TretiTrida absolutne netusi co to je $kkk.. bere ji jako nedefinovanou promenou - musis treti tride predat instanci prvni tridy:) Doufam ze sem se v tom nezamotal.

Jinak:


class First{

public $kkk;

public function __construct()
{
$kkk = "kvak";
}

}

class Second extends First{

public function __construct()
{
parent::__construct();
}

}
$druha = new Second();
echo $druha->kkk; // melo by vypsat 'kvak' pisu z hlavy - nejsem si 100% jist
Mastodont
Profil
A zkoušel sis to sám? Já nechápu, na co se vlastně ptáš - jestli je $kkk přístupné nebo ne, si snad umíš ověřit sám, ne?
karel
Profil *
děkuju za odpověď, vidím, že jsem to opravdu napsal nejasně.
Ty třídy od sebe nedědí. Vlastně otázka je prostá: když uvnitř jednoho
objektu vytvořím jiný, ale jako odkaz: $kkk =& new Trida;
jestli ten objekt bude viditelný i mimo tu první třídu?
one_k
Profil
pokud ten objekt bude public, tak nejspis ano. zkus to.
karel
Profil *
Mastodont:
prostě mi není jasné, k čemu se používá ten operátor (myslím, že referenční): &
Mastodont
Profil
No nebude, když je to lokální proměnná.

EDIT - byl míněn ten první příklad.
Mastodont
Profil
karel
Operátor & se používal u objektů hodně v PHP4, protože tam se při použití = vytvářely kopie objektů. V PHP5 to už není nutné, protože tam = vrací odkaz, ne kopii.
karel
Profil *
AHA, to JE informace, díky!
K:
one_k
Profil
Mastodont takze $a = $b mi vrati referenci na $b a nezkopiruje ji?

editL: nerekl jsem to presne ale da se to z toho pochopit co mam na mysli:)
Mastodont
Profil
one_k
Řeč je o objektech.
one_k
Profil
Mastodont
aha tak to jo:)
karel
Profil *
sorry, ještě jednou pro Ty pomalejší (pro mě):
pokud vytvořím v rámci objektu A objekt B, tak ten objekt B není z vnějšku objektu A přístupný jinak než jako atribut objektu A:
$A->$B;
?

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: