Portál AbcLinuxu, 11. května 2025 10:02

Dotaz: Jak na instance v php

16.10.2013 14:22 Orlando
Jak na instance v php
Přečteno: 376×
Odpovědět | Admin
Ahoj, poradí někdo jak na instance v php?

Potřebuji něco jako
$error = new Error($menu);
$menu = new Menu($error);
$con = new Con($error);
a nevím jak dostat instanci $menu do class Error když ještě neexistuje. Poradí někdo? Děkuji

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.10.2013 14:29 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak na instance v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedině přes následnou inicializační/set funkci.
$error = new Error($menu);
$menu = new Menu($error);
$error->setMenu($menu);
$con = new Con($error);
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
16.10.2013 14:35 Orlando
Rozbalit Rozbalit vše Re: Jak na instance v php
Díky moc, toho jsem se bál ;) nemá ten první řádek být takto?
$error = new Error();
místo
$error = new Error($menu);
16.10.2013 14:41 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak na instance v php

Má.

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
lukve avatar 19.10.2013 12:47 lukve | skóre: 29 | blog: Lukove | Prešov
Rozbalit Rozbalit vše Re: Jak na instance v php

čo tak taketo šialenstvo???

 

/*
// what if we want to extend more then one class?
Abstract class ExtensionBridge
{
// array containing all the extended classes
private $_exts = array();
public $_this;

function __construct(){$_this = $this;}

public function addExt($object)
{
$this->_exts[]=$object;
}

public function __get($varname)
{
foreach($this->_exts as $ext)
{
if(property_exists($ext,$varname))
return $ext->$varname;
}
}

public function __call($method,$args)
{
foreach($this->_exts as $ext)
{
if(method_exists($ext,$method))
return call_user_method_array($method,$ext,$args);
}
throw new Exception("This Method {$method} doesn't exists");
}   
}

// parent::addExt(new Ext1());
// parent::addExt(new Ext2());
*/

linux user more than 20y
16.10.2013 14:46 Kit
Rozbalit Rozbalit vše Re: Jak na instance v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zpravidla je výhodnější vyhýbat se cyklickým závislostem.
16.10.2013 14:52 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak na instance v php
Jsem se těšil kdo začne, vyhrál jsi, teď uvidíme jak se to vyvine… :-)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
16.10.2013 15:01 Kit
Rozbalit Rozbalit vše Re: Jak na instance v php
Orlando mívá občas zvláštní požadavky. Podle jeho ukázky si myslím, že má jen chybu v objektovém návrhu a myslel jsem si, že by bylo vhodné ho na to upozornit. Jak to udělá, je už jeho boj.

Kruhovým závislostem se vyhýbám jak to jen jde, protože když pak použiji rekurzi, nemusí to dobře dopadnout.
Josef Kufner avatar 17.10.2013 20:55 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak na instance v php
Jo, chybu v návrhu tam nejspíš má. Kruhové závislosti by v dobře navrženém kódu většinou neměly vznikat. Občas dávají smysl, typicky odkaz z potomka na rodiče, ale většinou jen indikují horší problémy.
Hello world ! Segmentation fault (core dumped)
16.10.2013 18:09 Orlando
Rozbalit Rozbalit vše Re: Jak na instance v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chlapy a co použití extends? Je to bežné nebo taky oblouk?
Tarmaq avatar 16.10.2013 18:59 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak na instance v php
Ano, extends se bezne pouziva. Ale moc nechapu jak by ti to mohlo v tomhle pripade pomoct. Jaky je vyznam tech trid Menu, Error a Con? Tu tridu Error mas nainstancovanou vzdy, nezavisle na tom zda k chybe doslo?
Don't panic!
16.10.2013 19:08 Orlando
Rozbalit Rozbalit vše Re: Jak na instance v php
Ano, nainstancovaná je vždy nezavisle na tom zda k chybe doslo. Zeptám se jinak, snad líp. Dejme tomu, že mám 3 x class a potřeboval bych se mezi nima pohybovat v tom smyslu, že budu mít s každé této class přístup do každé class a to jak na metody tak i na proměnné. Jde to vůbec pomocí extends? Díky
16.10.2013 20:40 Orlando
Rozbalit Rozbalit vše Re: Jak na instance v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Něco takového bych patrně potřeboval
class Syn extends Tata {

     private $syn = "syn";

     public function __construct()
     {
          // ??? Přepiš proměnnou $tata v class Tata
          // ??? Přepiš proměnnou $dcera v class Dcera
     }
}

class Dcera extends Tata {

     private $dcera = "dcera";

     public function __construct()
     {
          // ??? Přepiš proměnnou $tata v class Tata
          // ??? Přepiš proměnnou $syn v class Syn
     }
}

class Tata {

     private $tata = "tata";

     public function __construct()
     {
          $this->obj1 = new Syn();
          $this->obj1 = new Dcera();
          // ??? Přepiš proměnnou $syn v class Syn
          // ??? Přepiš proměnnou $dcera v class Dcera
     }
}

new Tata();
Tarmaq avatar 17.10.2013 09:33 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak na instance v php
dost dobre si nedovedu predstavit, k cemu by tohle mohlo byt dobre. Proc je Syn i Dcera instancovana do stejne promenne? Co ma nakonec zustat v primarnich promennych danych trid po instanciaci tridy Tata? Stale to pro me neni dostatecne ilustrativni priklad. Nemohl bys nejak nastinit o co ti jde?
Don't panic!

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.