在 PHP 中具有多个参数的相同命名函数
我从Java开始OOP,现在我对PHP非常投入。是否可以像在Java中那样创建具有不同参数的函数的倍数?还是语言的解释/非类型化性质会阻止这种情况并引起冲突?
我从Java开始OOP,现在我对PHP非常投入。是否可以像在Java中那样创建具有不同参数的函数的倍数?还是语言的解释/非类型化性质会阻止这种情况并引起冲突?
如果您正在处理类,则可以重载方法(请参阅重载),例如:__call()
class Foo {
public function doSomethingWith2Parameters($a, $b) {
}
public function doSomethingWith3Parameters($a, $b, $c) {
}
public function __call($method, $arguments) {
if($method == 'doSomething') {
if(count($arguments) == 2) {
return call_user_func_array(array($this,'doSomethingWith2Parameters'), $arguments);
}
else if(count($arguments) == 3) {
return call_user_func_array(array($this,'doSomethingWith3Parameters'), $arguments);
}
}
}
}
然后你可以做:
$foo = new Foo();
$foo->doSomething(1,2); // calls $foo->doSomethingWith2Parameters(1,2)
$foo->doSomething(1,2,3); // calls $foo->doSomethingWith3Parameters(1,2,3)
这可能不是最好的例子,但有时可能非常方便。基本上,您可以使用它来捕获不存在此方法的对象上的方法调用。__call
但它与Java不同或容易。