Autor Zpráva
Ficik
Profil *
Dobrý den,
Mám drobný problém, nejlépší bude script:

class objektA {
  var promenna;

  funtion objektA () {
    $this->objektB = new objektB ($this);
  }
}

class objektB {
  function zapis(){
    ??$parent->promenna = "hello world"; ??
  }
}

Může objektB zapsat do proměnné promenna která patří objektuA případně volat funkce objektuA? Pokud ani tak jak? Děkuji..
Joker
Profil
Ficik
V takovém případě by bylo asi vhodnější použít spíš dědění, než skládání.
(v případě skládání by se asi objekt neměl starat o to, čeho je součástí... jak vkládaný objekt může vědět, že objekt, který ho bude vkládat, vůbec bude obsahovat ty proměnné a metody, které chce volat?)
Ficik
Profil *
Děkuji.. Mě vždy dojde co to placnu blbost až když se někde zeptám.. :)
bukaj
Profil
Ficik
V případě, že je objektA naimplementován takto, musel by objektB, aby měl přístup k vytvořené instanci objektA, být takto:
<?php
class objektB
{
    var $objektA;
    function objektB($objektA)
    {
        $this->objektA = $objektA;
    }

    function zapis()
    {
        $parent = $this->objektA;
        $parent->promenna = "hello, world";
    }
}


Ale je problém, že takhle se vytvářejí cykly objektů, které garbage collector PHP nedokáže odstranit. Samozřejmě taky záleží na tom, co chceš udělat. Možná by se pro to našlo i nějaké lepší řešení.

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: