| 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: 14 let
|
|||
0