Autor | Zpráva | ||
---|---|---|---|
ybznek Profil |
#1 · Zasláno: 9. 8. 2011, 23:19:40
Ahoj, chtěl bych se poradit, jak byste řešili daný problém, aby to bylo co nejsprávnější
mám třídu, která má jednu metodu, například register() problém je v tom, že chci volat trida::register(username,password); ale také trida::register(<nějaký nerozparsovaný string>) v delphi jsem byl zvyklý napsat obě funkce a ona se podle parametrů "zvolila sama" v php by to šlo nejspíš šlo udělat pomocí __call, ale přijde mi to jako s kladivem na komára popř jak správně pojmenovat tento styl metod, aby to bylo intuitivní a srozumitelné pro někoho cizího, kdo by se do toho podíval. Jakým způsobem byste to řešili vy? Omlouvám se, pokud je tento dotaz příliš hloupý. Děkuji za odpověď |
||
joe Profil |
#2 · Zasláno: 10. 8. 2011, 03:57:08
V PHP není přetěžování metod jako v jiných jazycích.
Udělal bych to tak, že bych nechal metodu trida::register($username, $password, array $data = array()); A to parsování asi prováděl ještě před voláním té metody register. Pokud bych chtěl přidat ještě nějaká další data, přidal bych je jako volitelný parametr. |
||
Alphard Profil |
#3 · Zasláno: 10. 8. 2011, 11:13:13
func_get_args() zjistí počet parametrů dodaných funkci. Pak by šlo pomocí jejich počtu a typu (is_numeric() apod.) podmínkovat tělo, ale v PHP bych se složitému rozdělení spíš vyhnul.
|
||
Lamicz Profil |
#4 · Zasláno: 11. 8. 2011, 17:54:04
Asi bych to řešil úplně jinak - User::register a String::register
|
||
Majkl578 Profil |
#5 · Zasláno: 11. 8. 2011, 18:03:16
Já bych asi volil podle toho, co má být
<nějaký nerozparsovaný string> . Pokud nějaká stringová reprezentace jména a hesla, co třeba metody User::register($username, $password) a User::registerFromString($string) (nebo statickou User::parseRegisterString($string) vracející username a password)?
|
||
ybznek Profil |
#6 · Zasláno: 11. 8. 2011, 23:28:57
joe:
to mi přijde nezvyklé, třeba pro někoho cizího by to mohl být problém na první pohled pochopit Lamicz: moc nechápu, co přesně by obsahoval "String"? Majkl578: asi použiju tvé řešení |
||
Časová prodleva: 13 let
|
0