PHP 函数重载有什么作用?
2022-08-30 20:54:35
在像Java这样的语言中,重载可以这样使用:
void test($foo, $bar){}
int test($foo){}
然后,如果你用2个参数调用,例如,第一个函数将被调用。如果你只传递了 1 个参数,例如 ,将调用第 2 个函数。test()
test($x, $y);
test($x);
从手册中可以看出 php 5 确实有重载,但它有什么用呢?我似乎无法理解有关此主题的手册。
在像Java这样的语言中,重载可以这样使用:
void test($foo, $bar){}
int test($foo){}
然后,如果你用2个参数调用,例如,第一个函数将被调用。如果你只传递了 1 个参数,例如 ,将调用第 2 个函数。test()
test($x, $y);
test($x);
从手册中可以看出 php 5 确实有重载,但它有什么用呢?我似乎无法理解有关此主题的手册。
PHP的重载含义与Java不同。在 PHP 中,重载意味着您可以通过实现一些__magic
方法(如 、 .加载具有新成员的对象。__get
__set
__call
__callStatic
PHP 中的重载提供了动态“创建”属性和方法的方法。这些动态实体通过魔术方法进行处理,人们可以在类中为各种操作类型建立。
例如:
class Foo
{
public function __call($method, $args)
{
echo "Called method $method";
}
}
$foo = new Foo;
$foo->bar(); // Called method bar
$foo->baz(); // Called method baz
顺便说一句,PHP从PHP 4.3.0开始就支持这种重载。唯一的区别是,在 PHP 5 之前的版本中,您必须使用 overload()
函数显式激活重载。
如果要像 Java 中那样重载函数,请不要指定任何参数,而是使用 func_num_args
和 func_get_args
函数来获取传递给该函数的参数数或参数本身:
function test() {
$args = func_get_args();
switch (count($args)) {
case 1:
// one argument passed
break;
case 2:
// two arguments passed
break;
default:
// illegal numer of arguments
break;
}
}