php為什麼不支援函式過載啊?

2025-03-22 04:15:25 字數 3588 閱讀 5036

1樓:流星夢陽

雖然有關php的書上都寫液跡裂明php支援過載。不過其實那是覆蓋。是子類對父類方法或變數的重寫。不能叫做過載。

php不支援函式的過載,可能以後也永遠不會支援。

在oop中,函式的過載有兩個條件。

1、引數的個數不同——php支援引數預設,無法用引數個數區別。

2、引數的型別不同——php是弱型別語言,會根據上下文自動做型別轉換。

所以,鬧閉php不可能支援函式的過載,不過能用其他的方法模擬出來的。比如你自己寫方法在寫的函式里用判斷語句,得到引數個數或型別,去執行不同的**,不過意義不大,完全可以定義個新名字的函式!

根據zend網州橘站的討論,將來實現操作符過載的可能性也很小,不過拭目以待,萬一他們一高興將php全部重寫,跟c++一樣了,那就無敵了。。

php 到底可不可以過載

2樓:網友

php 不支援物件方法的過載overload,理解成『多重灌載』。

但支援物件方法的覆輪頃扒蓋(或叫重寫)override ,這種也可以叫『過載』做『重新裝載』理解。

可能書中行文不夠嚴謹臘昌。表達的意思沒錯,但引乎裂起歧義。

php函式不支援的功能有:

3樓:網友

a肯定不對,並沒有可變函式名稱的說法,雖然函式可以用變數形式呼叫。

如果是多選的話,d有可能也不對,php語言中並沒有真正意義上的指標,無論是傳遞引用還是遊標都是一種指標應用,但是和c的指標不能畫全等號。

樓上那個可以忽略了,可變引數個數是肯定支援的,如系統函式sprint_f可以使用1-n個引數。

4樓:網友

php函式的引數個數必須是確定的,當然你引用函式的時候,如果有的引數是有預設值的,可以不用將他們寫上。

function test($a,$b=array())你引用的時候可以。

test('1',array(1,2,3));

也可以test('1');

但其實test的函式引數個數是確定的。

php構造器是不是不能過載? - php進階討論

5樓:匿名使用者

原帖由 於 2008-9-28 09:53 發表 [i][/url]過載:(overload)1.

在同乙個類中;(不單單是類中,普通函式也包括)2.方法名相同;3.引數個數或者引數型別不同(如果引數型別和個數相同,但是型別順序不同也是過載!

4.與返回型別無關勞倫斯兄弟說得對,ph ..b]龍兄說對了關鍵的概念沒弄清楚扒前吧,名詞與用途沒有對上號。

1、春隱清弄清概念:過載(overload)、重寫(override)、繼承(extends)2、php是弱型別,過載根據變數型別和個數不同而進行,所以只能模擬過載。3、php支援在繼承類中重寫(覆蓋)方法。

4、建構函式(_construct)可以被繼承。攜答。

6樓:匿名使用者

php建構函式慧哪不是不能前衡碼過載, 而攔御是不能被繼承。要在子類使用建構函式, 必須過載建構函式。分清繼承與過載的定義。

7樓:匿名使用者

lz是指override可以的寬姿, 只要同名就可以了呀。 但最好是使用php5中的__construct建構函式不知道是不是指這衝或個散巧伍, lz可以貼個例子**。

php 終止函式

8樓:天蠍神經俠侶

register_shutdown_function(「callback_func」);

引數為被呼叫的函式名。

當php程式異常結束時,會呼叫被註冊的函式。

異常結束包括:程式被強制終止,致命錯誤,執行完成後。

使用者自定義函式乙個函式可由以下的語法來定義:

任何有效的php**都有可能出現在函式內部,甚至包括其它函式和類定義。

在php3中,函式必須在被呼叫之前定義。而php4則不再有這樣的條件。函式如以下兩個範例中有條件的定義。

如果乙個函式以以下兩個範例的方式有條件的定義,其定義必須在呼叫完成。

php中的所有函式和類都具有全域性域,可以在內部定義外部呼叫,反之亦然。

php不支援函式過載,也不可能取消定義或者重定義已宣告的函式。

函式名是非大小寫敏感的,不過在呼叫函式的時候,通常使用其在定義時相同的形式。

php3雖然支援預設引數(更多資訊請參照預設引數的值),但是卻不支援可變的引數個數。php4支援:見可變長度的引數列表和涉及到的相關函式,,以及以獲取更多的資訊。

在php中可以呼叫遞迴函式。但是要避免遞迴函式/方法呼叫超過100-200層,因為可能會破壞堆疊從而使當前指令碼終止。

9樓:網友

die比如連線資料庫的時候出錯就直接可以終止後面的操作:

db = mysql_connect('localhost','root','') or die('...');

php真的能算是物件導向的語言嗎?

10樓:手機使用者

是這樣的,或者說php不是純粹的物件導向,只是基於物件的程序導向語言,純粹的物件導向必須是支援封裝、繼承,多型(集中包含過載)的類實現。

11樓:本逸春

php為什麼不能過載呢?

php中的"過載"與其它絕大多數面嚮物件語言不同。傳統的"過載"是用於提供多個同名的 類方法,但各方法的引數型別和個數不同。

詳見參考資料。

12樓:網友

沒必要在這方面較真。

語言分為程序導向和麵向物件。

這就可以說不是程序導向的就是物件導向的。

php擁有類,這個是面向 過程語言不具備的,當然就不是程序導向的語言了,既然不是程序導向的,那當然就是物件導向的了。

php怎麼過載已經存在的方法

13樓:網友

只有 test 方法不存在的時候, 才會圓差鄭呼叫 __call你已經定義了 test 方法, 所以不會去觸發 __call所以這慶昌種情況,一般的寫法是。

class test {

private function _test0(){echo "no argument."橘頌';

private function _test1($arg1){echo $arg1;

private function _test2($arg1, $arg2){

echo $arg1, "arg2;

public function __call($func, $args){

if($func ==test'){

number = func_num_args();

args = func_get_args();

if($number ==1){

return $this->_test1($args[0]);

elseif($number ==2){

return $this->_test2($args[0], args[1]);

else{return $this->_test0();

為什麼有人不支援韓庚

1 韓庚不是人民幣,不可能人人喜歡,看淡點 2 據我個人理解,很多不待見他的人,並不是因為他有什麼缺點,而是飯的人不同 人氣利益各種關係衝突造成的。最近韓庚吧有幾個科普貼,你可以回去瞭解一下。3 關注娛樂本來就是為了 娛樂 把時間精力花在這種糾結上就不值得了,也有悖飯他的初心。4 人無完人,但這並不...

為什麼老是提示瀏覽器不支援該功能

開啟qq群,就提示 對不起,您的瀏覽器不支援此功能性。其實,這個毛病和qq空間的毛病差不多。都是因為msxml的問題造成的。可以 這兩個微軟的補丁進行修復獨立瀏覽器也都用過了,但問題依然。這就說明問題不在 ie 身上,在於系統本身。而在 msxml sp 的描述裡有這樣句話 msxml servic...

為什麼好多樓盤不支援公積金貸款,那公積金的就沒用了

對於開發抄 商來說,公積金貸款流程複雜 稽核時間長,不利於開發商進行資金回籠。慢也就是指市民申請公積金貸款的稽核與放款速要比一般商業貸款慢很多,加上開發商拿地建房,就是一個花費巨大時間的事情,想要加快速度回籠資金,一般不支援公積金貸款買房,這樣看來也是合情理的。根據相關規定,專案工程進度必須達到工程...