/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
constructor
Fra : Martin Møller Bæk


Dato : 26-07-03 23:50

Kan det passe, at man i PHP4 kun kan bruge en constructor
i hver klasse. Jeg har lavet to; en uden argumenter og en med
et argument, men det er kun det "nederste", der virker.

--
mvh
Martin MB
www.yavi.dk



 
 
Per Thomsen (27-07-2003)
Kommentar
Fra : Per Thomsen


Dato : 27-07-03 12:43

Martin Møller Bæk wrote:
> Kan det passe, at man i PHP4 kun kan bruge en constructor

Ja, det er fuldstændig korrekt. PHP4 understøtter ikke name overloading.

> i hver klasse. Jeg har lavet to; en uden argumenter og en med
> et argument, men det er kun det "nederste", der virker.

Ja, den nederste virker formentlig fordi den er erklæret sidst.

Hvis det er et spørgsmål om at din contructor kan tage 2 eller ingen
argumenter kan du selv kode name overloadingen:

class NameOverload {

function NameOverload() {
$argc = func_num_args();
$argv = func_get_args();
if( $argc==0 ) {
$this->NameOverloadNoArgs();
} else
if ( $argc==2 ) {
$this->NameOverloadTwoArgs($argv[0], $argv[1]);
} else {
trigger_error('NameOverload: Invalid constructor', E_USER_ERROR);
}
}

function NameOverloadNoArgs() {
// Do what ever
}

function NameOverloadTwoArgs($arg0, $arg1) {
// Do what ever with two arguments;
}
}


Du burde godt kunne gennemskue hvordan den kan udvides. Problemer kommer
først, når man har 2 constructorer med 2 argumenter, men hvor argumenter
ne ikke er af samme type. PHP er jo dynamisk typet så det bliver lidt
mere besværlig, men man kan da lave noget med is_*() funktionerne, der
vil virke i de fleste tilfælde.

MVH Per Thomsen,
http://www.pert.dk/


Martin Møller Bæk (27-07-2003)
Kommentar
Fra : Martin Møller Bæk


Dato : 27-07-03 15:04

"Per Thomsen" <pert@pert.dk> skrev i en meddelelse
news:bg0dru$53p$1@sunsite.dk...
> Martin Møller Bæk wrote:
> Ja, det er fuldstændig korrekt. PHP4 understøtter ikke name overloading.
>
> Ja, den nederste virker formentlig fordi den er erklæret sidst.
>
> Hvis det er et spørgsmål om at din contructor kan tage 2 eller ingen
> argumenter kan du selv kode name overloadingen:
>
......
> Du burde godt kunne gennemskue hvordan den kan udvides. Problemer kommer
> først, når man har 2 constructorer med 2 argumenter, men hvor argumenter
> ne ikke er af samme type. PHP er jo dynamisk typet så det bliver lidt
> mere besværlig, men man kan da lave noget med is_*() funktionerne, der
> vil virke i de fleste tilfælde.

Ok, tak for svaret.
Det er lidt irriterende, at PHP4 ikke understøtter name overloading,
men så er det da godt, at man komme ud af det. Tak for koden.
Den kan vist hurtigt tilpasses til min kode, så det er fint.

Der skulle iøvrigt vist nok komme en del ændringer i PHP5
vedrørende OOP. Det glæder jeg mig til. I det jeg kort har
skimtet om PHP5 skulle syntaksen komme til at ligne Java
utrolig meget.

--
mvh
Martin MB
www.yavi.dk



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste