02. 08. 2007. | #1 |
Super Moderator
Invented the damn thing
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
|
PHP5 Overloading
Treba vam Java like overloading (u Javi recimo nesto ovako):
Kôd:
class Overloading_Test { public void hello() { System.out.println("Hello Anonymous"); } public void hello(String name) { System.out.println("Hello " + name); } public void hello(String firstName, String lastName) { System.out.println("Hello " + firstName + " " + lastName); } } Malo sam se igrao veceras sa magic funkcijama (konkretno '__call') i dosao do interesantnog resenja: PHP kôd:
|
02. 08. 2007. | #2 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Po meni malo elegantnije rešenje je da koristiš func_get_args i srodne funkcije. Super je za situacije kada broj parametara može da varira, a u isto vreme:
PHP kôd:
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog |
02. 08. 2007. | #3 |
Super Moderator
Invented the damn thing
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
|
Pazi, realno ovo je vise hack nego neko resenje, recimo resenje sa default argumentima (koje je neki lik submitovao na moj blog) je mnogo cistije i u duhu php-a u poredjenju sa ovim. No, cela poenta je da za slucaj da nekome nedostaje overloading u Java stilu, to je moguce odraditi (doduse, ne nesto preterano elegantno).
Inace, ja sam u svojoj klasi hardkodovao pozive (hello1, hello2 ...) ... ali naravno, moguce je zvati ih dinamicki, bilo sa $this->$method_name ili koriscenjem call_user_func_array f-je. |
02. 08. 2007. | #4 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Sve zavisi od perspektive.
Meni se na primer sam pojam overloadovanje čini kao teški hakeraj u smislu - platforma je toliko statična da sada moramo da se drndamo i izmišljamo nove termine za nešto što bi samo po sebi trebalo da radi. Hajde da imamo više definicija istog metoda gde se na osnovu prosleđenih parametara određuje koji ćemo tačno koristiti. Školski primer budževine. No, to je sada potpuno druga priča.
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog |
02. 08. 2007. | #5 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
|
02. 08. 2007. | #6 |
Milan Cvejic
Wrote a book
|
Slazem se sa jablanom, ali to bi trebao sam programski jezik da podrzava, a ne da programer budzi nesto...
__________________
http://weevify.com |
02. 08. 2007. | #7 |
Dejan Katašić
Wrote a book
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
|
Kôd:
function hello ($name = 'Anonymous') { $args = func_num_args () ? func_get_args () : array ($name); echo 'Hello ' . implode (', ', $args); } Nisam baš experienced u Javi, ali mi je jasan smisao overloadinga - upravo pojednostavljenje koda za laganije rešavanje različitih scenarija upotrebe funkcije. Logički dele isto ime što korisniku funkcije olakšava proces razmišljanja, dok parametri (njihov tip i broj) određuju šta treba tamo negde u pozadini da se izvrši (a to i ne interesuje korisnika, ako radi). Trpanje sveg tog koda u jednu funkciju i switchovanje čini ga težim za održavanje (neko reče budž :-) Muka ovog primera je što svaki overload uzima novo ime (hello1, hello2, hello3) i što zahteva pisanje dispečera (to mu dođe ovaj __call), ali makar se korisnik komotnije oseća. |
02. 08. 2007. | #8 |
dinosaurus
Master
Datum učlanjenja: 29.12.2005
Lokacija: Nova Engleska
Poruke: 636
Hvala: 79
263 "Hvala" u 66 poruka
|
Stvarno ne želim da izazivam "emocije", ali kad bih morao da radim u jeziku kakav je PHP, poludeo bih. To izgleda kao da mu je otac Perl a majka HTML
|
02. 08. 2007. | #9 |
Super Moderator
Invented the damn thing
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
|
A ima Objektni model slican Javi
Sve je stvar ukusa i navike. Ja sam na PHP upravo presao tamo negde 2001-ve iz sveta C-a i sve mi je delovalo savrseno logicno, barem kada je sintaksa u pitanju. Sada, nakon nekoliko godina rada sa istim, bi verovatno imao muke da odradim bilo sta u C++ na primer. Inace, ovo je jedan da tako kazem rogobatan primer, ali i dalje ne toliko da bi neko mogao da kaze da je PHP-u majka html . Ja recimo u poslednjih par meseci bukvalno nisam napisao liniju html koda, a opet napisao sam hiljade PHP koda. Naposletku, pogledaj kako izgleda klasa u JS-u ... ako je nekome HTML majka, onda to mora pre biti JS |
02. 08. 2007. | #10 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
@DT: To se dešava kad od babe praviš devojku. Svako malo krenu neke dlake da se pomaljaju...
|
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Go PHP5 | Ilija Studen | PHP | 1 | 10. 02. 2008. 22:12 |
PHP5 Exceptions | dee | PHP | 2 | 16. 07. 2007. 13:12 |
PHP5 only | zira | PHP | 13 | 03. 03. 2007. 15:02 |
PHP5 Exceptions | bluesman | PHP | 6 | 09. 02. 2006. 22:53 |
Smarty za PHP5 | bluesman | PHP | 5 | 08. 08. 2005. 23:19 |