
PHP - Jak se dostat do class z jiné class
Zdravím.
Měl bych dotaz ohledně PHP,
class A {
public function __construct(){
echo $this-> a = "string";
}
public function __set(){
..
}
public function __get(){
..
}
}
class B {
public function __construct(){
echo $this-> a; // proč se nevypíše 'string' ? Nejde to bez toho abych musel předat objekt $a přímo do třídy ? $a->b = new B($a) ?
}
}
$a = new A();
$a->b = new B();
Díky za informaci
B musí o A samozřejmě nějak vědět, aby se dostal k jejím hodnotám.
To ano, ale i když e objekt vytvořený ve stejné třídě ? Čili ve třídě A() ? Přece nemůžu vkládat objekt do sebe, ne ?
Tady mas dva zpusoby, vcetne stručného vysvetleni problemu.
http://stackoverflow.com/questions/12662962/callin g-a-php-class-from-within-another-class
A proč bys nemohl vkládat objekty do sebe? To se naprosto běžně dělá.
No můžu.. ale ne, že si dám jako parametr objekt svého rodiče, to je přece nesmysl, ne ?
Proč by to měl být nesmysl?
za prve
si si isty ze tam ma byt to echo?
za druhe trieda B nema ziadne a, tak neviem co tam chces vypisovat, $this je pointer na objekt triedy B, ked si v triede B.
A tu triedu B by si mal mat definovanu tak, aby jej funkcie nepotrebovali sahat na A, a ak ano tak by si to tej fcii mal dat ako parameter to na co potrebuje sahat. Ptz taky objektovy model lepsie popisuje skutocnost. Ked A je auto a B je koleso, tak koleso nepotrebuje nic robit s autom (koleso nemoze zapnut motor), ale auto potrebuje nieco robit s kolesom (napr. otacat ho). Preto sa aj veci uzatvaraju do tried, aby bolo chranene to co v skutocnosti nejde, aby si kolesom nemohol zapnut motor. Inac mozes vsetko nacpat aj flat do jednej triedy, ked v tom je gulas tak to je potom stejne fuk.