函数重载可能在php.If是的,那么如果不是,那么为什么?php中的函数重载
在此先感谢。
我已经检查了php手册,它给出了重载的解决方案,因为mail()函数可以被mb_mail()函数重载。
但是,这是超载
函数重载可能在php.If是的,那么如果不是,那么为什么?php中的函数重载
在此先感谢。
我已经检查了php手册,它给出了重载的解决方案,因为mail()函数可以被mb_mail()函数重载。
但是,这是超载
不是,因为它还没有实施。有一个PECL扩展允许你这样做,但它使你的代码不能移植到这个扩展不可用的环境中。
不要问为什么它没有实现。
由于PHP 5.3,你可以使用命名空间为“种”超载
namespace MyNamespace;
function mail() {
return \mail();
}
这只能在内部完成(通过PHP扩展),除非你安装PECL runkit extension,它公开函数重载功能,用户空间的正确方法。
但是,您可能不希望在生产环境中使用runkit,因此没有从用户空间执行此操作的好方法。
在你看来,如何实现函数超载 – 2010-08-08 12:28:44
@Ankur你为什么需要它?你不能把这个函数换成另一个吗? – Artefacto 2010-08-08 12:35:16
@Ankur你看过他的回答了吗? – 2010-08-08 12:49:07
我是新的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数组内容的循环中..希望帮助..!
你打算在PHP中使用函数重载完成什么? – BoltClock 2010-08-08 12:30:55