Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
Potřebuju deklarovat poměrně velký počet tříd, které se povětšinou liší jednou či dvěma metodami.
Takže šablona jedné z nich by mohla vypadat třeba takhle: class CmdCommand { private $language = "en"; function __construct($path) { $this->path=realpath($path); } public function call(array $args) { /*tady to bude pokaždé jiné*/ } public function help() { return $this->help[$this->language]; } public function path($escape=0,$path="") { /* Getter pro vlastnost path*/ } } class cmd_cd zešablony CmdCommand { private $help = array( "en" => "Change current directory." ); public function call(array $args) { /** něco provede **/ } } |
||
Keeehi Profil |
#2 · Zasláno: 14. 7. 2012, 16:57:17
Správně je extends.
Implements je na rozhraní. |
||
Darker Profil |
#3 · Zasláno: 14. 7. 2012, 17:01:19
Keeehi:
„Správně je extends.“ No dobře, proč tedy nedělá, co chci? |
||
Keeehi Profil |
#4 · Zasláno: 14. 7. 2012, 17:05:53
Darker:
Jak to můžu vědět? To co chceš, aby to dělalo, to to normálně dělá. Asi to máš rozbité. |
||
Alphard Profil |
Jak do toho mícháte namespace? Nechápu.
Nebude problém v tom, že používáte výhledně private nebo public? |
||
Darker Profil |
Keeehi:
V extends opravdu chyba nebyla. Alphard: Chtěl jsem tím naznačit, že skript hlásil, že vlastnost neexistuje, ačkoli v nadřazené třídě byla. A zmizel mi kurzor tady v editoru. Moc se mi to nelíbí. Tak nefunguje. Pokud se snažím volat metodu help, která se hrabe ve vlastnosti help, hlásí to, že se k ní nemůže dostat protože je private. Což znamená že ty třídy nejsou tak propojené, jak bych chtěl. |
||
juriad Profil |
#7 · Zasláno: 14. 7. 2012, 17:38:41
podívej se na rozdíl mezi private a protected
správný modifikátor přístupu u $language je protected |
||
Časová prodleva: 12 let
|
0