|
|||||||
| PHP PHP aplikacije, Smarty, PEAR |
![]() |
|
|
Alati teme | Način prikaza |
|
|
#1 |
|
Super Moderator
Invented the damn thing
|
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:
. |
|
|
|
|
|
#2 |
|
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.668
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 |
|
|
|
|
|
#3 |
|
Super Moderator
Invented the damn thing
|
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. |
|
|
|
|
|
#4 |
|
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.668
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 |
|
|
|
|
|
#5 |
|
VD IT Direktora
Knowledge base
|
|
|
|
|
|
|
#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...
__________________
SerbianIS - Serbian internet security I thought what I'd do was, I'd pretend I was one of those deaf-mutes |
|
|
|
|
|
#7 |
|
Dejan Katašić
Grand Master
|
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. |
|
|
|
|
|
#8 |
|
dinosaurus
Expert
Datum učlanjenja: 29.12.2005
Lokacija: Nova Engleska
Poruke: 536
Hvala: 42
45 "Hvala" u 35 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
![]() |
|
|
|
|
|
#9 |
|
Super Moderator
Invented the damn thing
|
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 ![]() |
|
|
|
|
|
#10 |
|
VD IT Direktora
Knowledge base
|
@DT: To se dešava kad od babe praviš devojku. Svako malo krenu neke dlake da se pomaljaju...
![]() |
|
|
|
![]() |
| Alati teme | |
| Način prikaza | |
|
|
|||||
Slične teme
|
||||
| Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
| Go PHP5 | Ilija Studen | PHP | 1 | 10. 02. 2008. 21:12 |
| PHP5 Exceptions | dee | PHP | 2 | 16. 07. 2007. 12:12 |
| PHP5 only | zira | PHP | 13 | 03. 03. 2007. 14:02 |
| PHP5 Exceptions | bluesman | PHP | 6 | 09. 02. 2006. 21:53 |
| Smarty za PHP5 | bluesman | PHP | 5 | 08. 08. 2005. 22:19 |