PHP5中虛函式的實現方法分享

2022-10-06 13:57:15 字數 1193 閱讀 7761

請看下面的**:

複製** **如下:

php

class a

public function y()

public function z()

} class b extends a

} $b = new b();

$b->y();

echo "--\n";

$b->z();

?>

該例中,a::y()呼叫了a::x(),而b::x()覆蓋了a::x(),那麼當呼叫b::y()時,b::y()應該呼叫a::x()還是 b::x()呢?在c++中,如果a::x()未被定義為虛函式,那麼b::y()(也就是a::y())將呼叫a::x(),而如果a::x()使用 virtual關鍵字定義成虛函式,那麼b::y()將呼叫b::x()。然而,在php5中,虛函式的功能是由 self 和 $this 關鍵字實現的。如果父類中a::y()中使用 self::x() 的方式呼叫了 a::x(),那麼在子類中不論a::x()是否被覆蓋,a::y()呼叫的都是a::x();而如果父類中a::y()使用 $this->x() 的方式呼叫了 a::x(),那麼如果在子類中a::x()被b::x()覆蓋,a::y程式設計客棧()將會呼叫b::x()。

上例的執行結果如下:

a::x() was called. a::y() was called. --

b::x() was called. a::z() was called.

virtual-function.php

複製** **如下:

<?php

class parentclass

static public function do_print( $str )

} class childclass extends parentclass

} class anotherchildclass extends parentclass

} echo phpversion();

$a=new childclass();

$a->say( 'hello' );

$b=new anotherchildclass();

$b->say( 'hello' );

本文標題: php5中虛函式的實現方法分享

本文位址: /wangluo/php/81484.html

PHP5中常見魔術方法函式

php5中常見魔術方法函式 魔術方法 construct 例項化物件時被呼叫 destuct 當刪除乙個物件或者物件操作終止時被執行 call 呼叫物件不存在方法時被呼叫 get 呼叫物件不存在的屬性時被呼叫 set 設定物件不存在的屬性時被呼叫 tostring 列印乙個物件時被呼叫,比如echo...

PHP5中魔術方法

魔術函式 1。construct 例項化物件時被呼叫,當 construct和以類名為函式名的函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 當刪除乙個物件或物件操作終止時被呼叫。3。call 物件呼叫某個方法,若方法存在,則直接呼叫 若不存在,則會去呼叫 call...

php5中XML RPC函式的使用

這幾天在看了zend php5 code contest的比賽獲獎作品,看了幾個的關於web架構方面的獲獎作品,感受頗深,xml和php結合應用越來多了,裡面幾乎所有的作品在設計上都用到了xml這個東西.又落伍了不少.建議朋友們都去看看.所以自己這幾天在瘋狂的學習php和xml結合的相關知識.這其中...