php(5.3.7)是否支持重载?
示例:
class myclass{
function __construct($arg1) { // Construct with 1 param}
function __construct($arg1,$arg2) { // Construct with 2 param}
}
new myclass(123); //> call the first construct
new myclass(123,'abc'); //> call the second
答案 0 :(得分:5)
您必须实施一次构造函数并使用func_get_args
和func_num_args
,如下所示:
<?php
class myclass {
function __construct() {
$args = func_get_args();
switch (func_num_args()) {
case 1:
var_dump($args[0]);
break;
case 2:
var_dump($args[0], $args[1]);
break;
default:
throw new Exception("Wrong number of arguments passed to the constructor of myclass");
}
}
}
new myclass(123); //> call the first construct
new myclass(123,'abc'); //> call the second
new myclass(123,'abc','xyz'); //> will throw an exception
这样你可以支持任意数量的参数。
答案 1 :(得分:4)
不,但它支持optional parameters或variable number of parameters。
class myclass{
function __construct($arg1, $arg2 = null){
if($arg2 === null){ // construct with 1 param //}
else{ // construct with 2 param //}
}
}
请注意,这有一个缺点,如果您真的希望能够提供null
作为第二个参数,它将不会接受它。但在远程情况下,您希望始终可以使用func_*
系列的util。