Portál AbcLinuxu, 26. dubna 2024 12:37


Dotaz: PHP - Jak získat instanci z vnořených class

24.11.2014 21:17 Harry
PHP - Jak získat instanci z vnořených class
Přečteno: 182×
Odpovědět | Admin
Ahoj. Chtěl jsem se zeptat, zda existuje nějaké jednoduché řešení, jak získat instanci z vnořených class. V class Foo1 vytvářím instanci Foo2, v class Foo2 vytvařím další instaci s Foo3, no a v class Foo1 potřebuji získat tu instanci class Foo3. pomůže prosím někdo?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.11.2014 22:34 Sten
Rozbalit Rozbalit vše Re: PHP - Jak získat instanci z vnořených class
Odpovědět | | Sbalit | Link | Blokovat | Admin
$this->foo2->foo3
24.11.2014 23:25 Harry
Rozbalit Rozbalit vše Re: PHP - Jak získat instanci z vnořených class
?
Tarmaq avatar 25.11.2014 10:14 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PHP - Jak získat instanci z vnořených class
Ukaz kod, tezko budeme navrhovat spravne reseni bez kodu, zvlast kdyz jsi tridy pojmenoval Foo1, Foo2 a Foo3. Stenovo reseni pocita s tim, ze budes mit instanci dane tridy ve verejnych promennych danych trid, cehoz muzes docilit napr. v jejich konstruktorech.
Don't panic!
25.11.2014 10:51 Ivan Nový
Rozbalit Rozbalit vše Re: PHP - Jak získat instanci z vnořených class
Odpovědět | | Sbalit | Link | Blokovat | Admin
Třeba takto:
class Table
{
    private $rows = array();

    public function addRow($cell_count)
    {
        $row = new Row();
        for($i = 0; $i < $cell_count;$i++)
            array_push($this->rows, $row);
        return $row;
    }

    public function getRow($i)
    {
       return $this->rows[$i];
    }

    public function getCell($i, $j)
    {
       return $this->rows[$i]->getCell($j);
    }

}

class Row
{
    private $cells = array();

    public function addCell()
    {
        $cell = new Cell();
        array_push($this->cells, $cell);
        return $cell;
    }

    public function getCell($i)
    {
       return $this->cells[$i];
    }
}

$table = new Table();
$table->addRow(10);
$cell = $table->getCell(0, 5);

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.