2010-08-08 38 views
2

函数重载可能在php.If是的,那么如果不是,那么为什么?php中的函数重载

在此先感谢。

我已经检查了php手册,它给出了重载的解决方案,因为mail()函数可以被mb_mail()函数重载。

但是,这是超载

+3

你打算在PHP中使用函数重载完成什么? – BoltClock 2010-08-08 12:30:55

回答

3

不是,因为它还没有实施。有一个PECL扩展允许你这样做,但它使你的代码不能移植到这个扩展不可用的环境中。

不要问为什么它没有实现。

由于PHP 5.3,你可以使用命名空间为“种”超载

namespace MyNamespace; 

function mail() { 
    return \mail(); 
} 
1

这只能在内部完成(通过PHP扩展),除非你安装PECL runkit extension,它公开函数重载功能,用户空间的正确方法。

但是,您可能不希望在生产环境中使用runkit,因此没有从用户空间执行此操作的好方法。

+0

在你看来,如何实现函数超载 – 2010-08-08 12:28:44

+0

@Ankur你为什么需要它?你不能把这个函数换成另一个吗? – Artefacto 2010-08-08 12:35:16

+0

@Ankur你看过他的回答了吗? – 2010-08-08 12:49:07

0

我是新的PHP ..所以不知道这些扩展上面提到..但最近我看到过载的方法功能在PHP(有点)..

传统的函数重载不支持在PHP中,因为你不能在php中有多个相同名称的函数..但你可以使用一个单一的函数,可以采取多个参数..已知作为变量函数(http://en.wikipedia.org/wiki/Variadic_function

function show() 
{ 
    $data = ""; 
    $arr = func_get_args();  //Returns an Array of arguments passed 

    for($a = 0 ; $a < func_num_args() ; $a++) // func_num_args returns number of arguments passed .. you can also use count($arr) here 
    { 
     $data .= $arr[$a]; 
    } 

    echo $data, "<br>"; 
} 

show("Hey","Hii","Hello"); 
show("How Are You"); 

这里..我已经通过了可变参数的函数,并追加他们每个人在一个字符串..
ofcourse包括字符串是没有必要的..你可以简单地echo $ ARR数组内容的循环中..希望帮助..!