La raison pour laquelle PHP ne peut pas définir plusieurs constructeurs est que, comme PHP est un langage faiblement typé, le type de paramètre d'entrée de la fonction ne peut pas être déterminé (les indices de type peuvent être utilisés, mais les indices de type ne peuvent pas être utilisés pour les entiers, les chaînes, etc. . type scalaire), et pour une fonction, par exemple, seuls 3 paramètres d'entrée sont définis, mais PHP saisit 4 paramètres ou plus lors de l'appel. Par conséquent, sur la base de ces deux points, il est prévu que les fonctions ne puissent pas être surchargées en PHP (similaire au langage Javascript), ni qu'il ne puisse y avoir de surcharge des constructeurs.
La méthode de construction de PHP est différente de celle de Java. Il ne peut pas y avoir plusieurs méthodes de construction. Si vous souhaitez implémenter l'utilisation de méthodes de construction de type Java, vous pouvez utiliser la méthode suivante. y parvenir :
[php] voir la copie simple
//PHP构造方法使用 class Test{ function __construct(){ echo 'Test类无参构造方法被调用<br/>'; $a=func_get_args(); $i=func_num_args(); //判断Test类是否有__constructxx方法,将方法名记为$f if(method_exists($this,$f='__construct'.$i)){ //若存在xx方法,使用call_user_func_array(arr1,arr2)函数调用他,该函数的参数为两个数组,前面的数组为调用谁($this)的什么($f)方法,后一个数组为参数 call_user_func_array(array($this,$f),$a); } } function __construct1($a1){ echo 'Test类1个参数的仿构造方法被调用<br/>'; //输出参数值 echo '其值为:'.$a1.'<br/><br/>'; } function __construct2($a1,$a2){ echo 'Test类2个参数的仿构造方法被调用<br/>'; echo '其值为:'.$a1.'、'.$a2.'<br/><br/>'; } function __construct3($a1,$a2,$a3){ echo 'Test类3个参数的仿构造方法被调用<br/>'; echo '其值为:'.$a1.'、'.$a2.'、'.$a3.'<br/><br/>'; } } //测试 new Test('你'); new Test('你','好'); new Test('你','好','啊');
Le résultat du test est :
Recommandations associées :
Explication détaillée du constructeur du langage PHP
Explication détaillée des fonctions ordinaires js et constructeurs
Analyse d'un exemple de modèle de constructeur JavaScript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!