程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 初探PHP5二

初探PHP5二

編輯:關於PHP編程

抽象類 抽象類不能被實例化。 抽象類與其它類一樣,允許定義變量及方法。 抽象類同樣可以定義一個抽象的方法,抽象類的方法不會被執行,不過將有可能會在其派生類中執行。 例六:抽象類 x = $x; } } class foo2 extends foo { function display() { // Code } } ?> __call PHP5 的對象新增了一個專用方法 __call(),這個方法用來監視一個對象中的其它方法。如果你試著調用一個對象中不存在的方法,__call 方法將會被自動調用。 例七:__call doStuff(); $x->fancy_stuff(); ?> 這個特殊的方法可以被用來實現“過載(overloading)”的動作,這樣你就可以檢查你的參數並且通過調用一個私有的方法來傳遞參數。 例八:使用 __call 實現“過載”動作 foo_for_int($arguments[0]); if(is_string($arguments[0])) $this->foo_for_string($arguments[0]); } } private function foo_for_int($x) { print("oh an int!"); } private function foo_for_string($x) { print("oh a string!"); } } $x = new Magic(); $x->foo(3); $x->foo("3"); ?> __set 和 __get 這是一個很棒的方法,__set 和 __get 方法可以用來捕獲一個對象中不存在的變量和方法。 例九: __set 和 __get bar = 3; print($x->winky_winky); ?> 類型指示 在 PHP5 中,你可以在對象的方法中指明其參數必須為另一個對象的實例。 例十:類型指示 process_a_foo($f); ?> 可以看出,我們可以顯性的在參數前指明一個對象的名稱,PHP5 會識別出這個參數將會要是一個對象實例。 靜態成員 靜態成員和靜態方法在面象對象編程的術語中被稱作 “對象方法(class methods)” 和 “對象變量(class variables)”。 “對象方法” 在一個對象沒有實例化前允許被調用。同樣,“對象變量” 在一個對象沒有實例化前可以被獨立操作控制(不需要用一個對象的方法來控制)。 例十一:對象方法和對象變量 異常處理 異常處理是公認的處理程序錯誤的理想方法,在 Java 及 C++ 中都有這個概念,我們欣喜的看到,在 PHP5 已經加入了這方面的應用。你可以嘗試使用 “try” 和 “catch” 來控制程序的錯誤。 例十二:異常處理 divide(3,0); } catch (Exception $e) { echo $e->getMessage(); echo "n
n"; // Some catastrophic measure here } ?> 上例中,我們使用了 “try” 來執行花括號中的語句,當有錯誤發生的時候,代碼會把錯誤交給 “catch” 子句來處理,在 “catch” 子句中,你需要指明要把錯誤交給某個對象處理,這樣做可以使代碼結構看起來更清晰,因為現在我們可以把所有的錯誤信息交給一個對象來處理。 自定義錯誤處理 你可以很方便的用自定義的處理錯誤的代碼來控制你的程序中的意外。你僅僅需要從異常類中派生出一個自己的錯誤控制類,在你自己的錯誤控制類中,你需要有一個構造函數和一個 getMessage 方法,以下是一個例子。 例十三:自定義錯誤處理 data = $data; } function getMessage() { return $this->data . " caused a weird exception!"; } } ?> 現在我們可以使用 “throw new WeirdProblem($foo)” 來拋出一個錯誤句柄,如果錯誤在 “try” 的代碼塊中發生,PHP5 會自動把錯誤交給 “catch” 部分來處理。 名稱空間 名稱空間對類的分組或函數分組很有用。它可以把一些相關的類或函數給組合到一起,方便以後調用。 例十四:名稱空間 注意你需要在何種情況下使用名稱空間,在實際運用中,你可能會需要聲明兩個或多個名稱一樣的對象來做不同的事情,那麼你就可以把他們分別放到不同的名稱空間中去(但接口是要相同的)。 譯者注:本篇文章來自 PHPbuilder,從以上文字中我們高興的看到 PHP5 中新增加的一些優秀的功能。我們還可以看到一些 Java 和 C++ 的影子,現在的 PHP5 還沒有正式發布,等到真正發布那一天,希望能再帶給所有的 PHP 愛好者更多的驚喜。對這方面比較感興趣的朋友可以登錄 PHP 官方新聞組去了解更新情況。新聞組地址為 news://news.php.net ,也可以登錄WEB界面 http://news.php.net 來訪問。讓我們一起來期待新版本的發布吧。:)(超越PHP Avenger) 注:本文章為原創文章,版權歸文章作者與超越PHP網站所有,未經本站同意,禁止任何商業轉載。非盈利網站及個人網站轉載請注明出處,謝謝合作!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved