函數重載可能在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