我在命名函数时遇到问题。我有一个课程,我需要2个类似下面的功能。
class myclass {
public function tempclass () {
echo "default";
}
public function tempclass ( $text ) {
echo $text;
}
}
当我打电话
tempclass('testing'); // ( called after creating the object )
正在调用 function tempclass()
如何才能拥有2个具有相同名称但参数不同的函数?
答案 0 :(得分:5)
PHP目前无法实现传统重载。相反,您需要检查传递的参数,并确定您希望如何响应。
此时查看func_num_args
和func_get_args
。您可以在内部使用这两个来确定如何响应某些方法的调用。例如,在您的情况下,您可以执行以下操作:
public function tempclass () {
switch ( func_num_args() ) {
case 0:
/* Do something */
break;
case 1:
/* Do something else */
}
}
或者,您也可以为参数提供默认值,并使用它们来确定您应该如何做出反应:
public function tempclass ( $text = false ) {
if ( $text ) {
/* This method was provided with text */
} else {
/* This method was not invoked with text */
}
}
答案 1 :(得分:0)
在PHP中无法进行重载。
但是,对于上面的简单示例,这样的事情可行:
class myclass {
public function tempclass ($text='Default') {
echo $text;
}
}