Teoricamente, não dá para sobrecarregar construtores em PHP...
Mas existe uma artimanha... Por exemplo, eu quero ter dois construtores, um com um parâmetro, outro com dois parâmetros:
<?php
class MinhaClasse {
//Construtor oficial
public function __construct() {
//Obtenho os argumentos passados
$args = func_get_args();
//Obtenho a quantidade de argumentos
$num_args = func_num_args();
//Obtenho o "nome" do construtor
$func = "__construct_$num_args";
//Se o "construtor" existe...
if (method_exists($this, $func)) {
//Executo ele
call_user_func_array(array($this, $func), $args);
//Se ele não existe...
} else {
//Lanço uma exceção.
throw new Exception('Construtor não existe');
}
}
//Nome do construtor com 1 argumento
private function __construct_1($parametro1) {
...
}
//Nome do construtor com 2 argumentos
private function __construct_2($parametro1, $parametro2) {
...
}
}
?>
Assim, quando você passar um parâmetro ao construtor:
MinhaClasse m = new MinhaClasse(1);
O construtor verifica o número de parâmetros e chama a função correta que vai executa-la.
É, para tudo, sempre tem um jeito... :P
Nenhum comentário:
Postar um comentário