我有这个PHP类
class myclass{
function name($val){
echo "this is name method and the value is".$val;
}
function password($val){
echo "this is password method and the value is".$val;
}
}
以下是如何使用它:
$myclass= new myclass();
$myclass->name("aaa")//output: this is name method and the value is aaa
它工作正常,因为我只有2个方法“名称”和“密码” 如果我有大量的方法,将这些方法添加到我的类并为每个方法编写相同的代码并不容易,我想改变我的类让每个方法给出与方法名称相同的输出?而且我不想为所有方法编写所有细节,因为它们几乎相似,这在PHP中是否可行? 我希望我很清楚:)
答案 0 :(得分:14)
您可以覆盖类的__call()
方法,这是在调用不存在的方法时将使用的“魔术方法”。
答案 1 :(得分:3)
使用__call魔术方法,如下所示:
class myclass
{
function __call($func, $args)
{
echo 'this is ', $func, 'method and the value is', join(', ', $args);
}
}
对于没有显式函数定义的任何函数,将调用此函数。
请注意,$ args是一个数组,包含函数调用的所有参数。