Autor | Zpráva | ||
---|---|---|---|
spartan13 Profil |
#1 · Zasláno: 6. 2. 2013, 15:02:37
Dobrý den,
potřebuju v PHP udělat "fluent interface" akorát, když mám předka, který vrací sebe (return $this) tak mi to samozřejmě vrátí toho předka, což nahrazuju v konstruktoru, že předkovi předám objekt, který to má vracet, jen mám potom problém, že mi IDE (Netbeans) nedává nápovědu, jelikož nepochopí, že má nabízet všechny metody potomka, nevíte jestli s tím lze něco udělat? |
||
Alphard Profil |
#2 · Zasláno: 6. 2. 2013, 15:45:54
Nevím, jestli vám dobře rozumím, nepomůže NetBeans nápověda phpdoc?
/** * Popis metody. * @return Projekt\Trida */ |
||
spartan13 Profil |
Alphard:
díky za odpověď, ono je právě problém, že od jedné metody se mohou volat různé třídy (předek má více různých potomků) a příjde mi "divné" u každé třídy (potomka) přepisovat metodu vlastně jen kvůli dokumentaci.. ideálně by to vypadalo takto (což bohužel nelze) : /** * Popis metody. * @return $this->return_class; */ |
||
Majkl578 Profil |
Nejsem si jist, zda to Netbeans podporují (jelikož je nepoužívám), ale nepomohlo by
@return $this ?
|
||
spartan13 Profil |
#5 · Zasláno: 6. 2. 2013, 16:33:57
Majkl578:
Díky, podporují, to používám ale jde mi o to, když metodu nemám psanou v potomkovi, je to jediné co mi momentálně zbývá všechny metody přepsat i v potomkovi (jen kvůli návratu) |
||
Alphard Profil |
#6 · Zasláno: 6. 2. 2013, 16:43:13
A to je nějaké supertřída která vrací nesouvisející věci? Nešlo by řešit děděním abstraktní třídy, implementace rozhraní apod.?
|
||
spartan13 Profil |
Alphard:
zřejmě máte pravdu, pokusím se přepsat návrh tříd, děkuji. Přesto ale nevím, jak danou strukturu navrhnout, jednoduše mám pár funkcí, které by měli být i ve zděděných funkcích.. pro zjednodušení: abstract class ATrida { private $a, $b; public function setA($a){ $this->a = $a; return $this; } public function setB($b){ $this->b = $b; return $this; } } class Trida extends ATrida { private $c; public function setC($c){ $this->c = $c; return $this; } } Jak jsem již zmiňoval napadají mě pouze dvě varianty (v konstruktoru abstraktní třídy předat objekt, který bych pak vracel -> IDE nepochopí ale funkční..) nebo bych musel všechny metody v potomkovi přepsat s přidáním return $this. (což mi příjde zbytečné a pokud bych něco změnil (jednu funkci, musím přepisovat ve všech třídách)) |
||
Časová prodleva: 13 let
|
0