Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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

Předmět Autor Datum
B musí o A samozřejmě nějak vědět, aby se dostal k jejím hodnotám.
Wikan 16.06.2016 13:03
Wikan
To ano, ale i když e objekt vytvořený ve stejné třídě ? Čili ve třídě A() ? Přece nemůžu vkládat obj…
MM2016 16.06.2016 14:32
MM2016
Tady mas dva zpusoby, vcetne stručného vysvetleni problemu. http://stackoverflow.com/questions/1266…
Dwane Dibbley 16.06.2016 14:45
Dwane Dibbley
A proč bys nemohl vkládat objekty do sebe? To se naprosto běžně dělá.
Wikan 16.06.2016 14:46
Wikan
No můžu.. ale ne, že si dám jako parametr objekt svého rodiče, to je přece nesmysl, ne ?
MM2016 16.06.2016 18:48
MM2016
Proč by to měl být nesmysl?
Wikan 16.06.2016 18:50
Wikan
za prve echo $this-> a = "string" si si isty ze tam ma byt to echo? za druhe trieda B nema ziadne…
MM.. 16.06.2016 19:50
MM..
A tu triedu B by si mal mat definovanu tak, aby jej funkcie nepotrebovali sahat na A, a ak ano tak b… poslední
MM.. 16.06.2016 19:56
MM..

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.

Zpět do poradny Odpovědět na původní otázku Nahoru