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/