par
zigz4g » 28 juin 2006, 13:37
Salut.
La surcharge en PHP5 est un peu 'inutile' puisque tu peux n'a pas forcément de typage sur les paramètres d'entrée (Attention tout de même au typage des classes).
Regarde du côté de __call(), c'est la méthode appelée si il n'y a pas le nom de la méthode voulue.
http://www.php.net/manual/fr/language.o ... oading.php
Personnellement, je trouve cette solution très peu pratique et peut rendre le code illisible si tu abuse de la fonction __call.
Dans cette méthode, il faudra faire des if pour gérer les différentes surcharges, ce qui n'est pas des plus pratique mais cela n'est que mon avis.
EDIT: Désolé manque le petit morceau qui répond à ta question, PHP retourne ce message quand tu fait ce code :
<?php
class Test
{
public function __construct()
{
echo 'Je suis dans le constructeur.<br />';
}
public function __construct($test)
{
echo 'Je suis dans le constructeur avec un param.<br />';
}
}
$test = new Test();
$test2 = new Test('tu');
?>
Code : Tout sélectionner
Fatal error: Cannot redeclare Test::__construct() in /var/www/html/test/php/test-surcharge-construct.php on line 21
Salut.
La surcharge en PHP5 est un peu 'inutile' puisque tu peux n'a pas forcément de typage sur les paramètres d'entrée (Attention tout de même au typage des classes).
Regarde du côté de __call(), c'est la méthode appelée si il n'y a pas le nom de la méthode voulue.
[url]http://www.php.net/manual/fr/language.oop5.overloading.php[/url]
Personnellement, je trouve cette solution très peu pratique et peut rendre le code illisible si tu abuse de la fonction __call.
Dans cette méthode, il faudra faire des if pour gérer les différentes surcharges, ce qui n'est pas des plus pratique mais cela n'est que mon avis.
EDIT: Désolé manque le petit morceau qui répond à ta question, PHP retourne ce message quand tu fait ce code :
[php]
<?php
class Test
{
public function __construct()
{
echo 'Je suis dans le constructeur.<br />';
}
public function __construct($test)
{
echo 'Je suis dans le constructeur avec un param.<br />';
}
}
$test = new Test();
$test2 = new Test('tu');
?>
[/php]
[code]Fatal error: Cannot redeclare Test::__construct() in /var/www/html/test/php/test-surcharge-construct.php on line 21[/code]