接上篇,繼續(xù)硬著頭皮往下翻。。。。:) 類型指示
在PHP5,你可以在一個類的方法中指明其參數(shù)必須為一個類的實例:
Example 10: 類型實例
<?php class foo { // code ... }
class bar { public function process_a_foo(foo $foo) { // Some code } }
$b = new bar(); $f = new foo(); $b->process_a_foo($f); ?>
可以看到,在變量前指定一個類名,讓PHP5知道這個變量將是一個類的實例
靜態(tài)成員
靜態(tài)成員和靜態(tài)方法在OOP中一般稱為"類變量"和"類方法"。
一個"類方法"可以在對象沒有被實例化的時候調(diào)用 一個"類變量"可以在對象沒有被實例化的時候訪問(也不需要對象的方法來調(diào)用)
Example 11: 類變量和類方法
<?php class calculator { static public $pi = 3.14151692;
static public function add($x,$y) { return $x + $y; } }
$s = calculator::$pi; $result = calculator::add(3,7); print("$result"); ?>
* 異常處理
異常處理是開發(fā)語言中公認的處理異常錯誤的方法,如在JAVA和C++中。 PHP5用"try"和"catch"關(guān)鍵字來捕獲異常。
Example 12: 異常處理
<?php class foo {
function divide($x,$y) { if($y==0) throw new Exception("cannot divide by zero"); return $x/$y; } }
$x = new foo();
try { $x->divide(3,0); } catch (Exception $e) { echo $e->getMessage(); echo "\n<br />\n"; // Some catastrophic measure here } ?>
可以看出,"try"表示的是執(zhí)行代碼的地方,當(dāng)有錯誤的時候執(zhí)行"catch"區(qū)域的代碼。 在"catch"區(qū)域你應(yīng)當(dāng)指明執(zhí)行異常的對象,這樣可以使我們的結(jié)構(gòu)更清晰
自定義異常處理
你可以在程序中定義自己習(xí)慣的捕獲異常錯誤的代碼。 非常簡單,你僅僅需要繼承一個異常類,在這個類中需要一個構(gòu)造器和一個叫g(shù)etMessage的方法而已:
Example 13: 自定義異常類
<?php class WeirdProblem extends Exception {
private $data;
function WeirdProblem($data) { parent::exception(); $this->data = $data; }
function getMessage() { return $this->data . " caused a weird exception!"; } } ?>
現(xiàn)在就可以用"throw new WeirdProblem($foo) "來拋出異常。如果在try{}這樣的區(qū)域中出現(xiàn)異常,PHP5就會跳入 catch區(qū)域來拋出異常。
名稱空間
"名稱空間"可以讓你方便地調(diào)用一組類或方法:
Example 14: 名稱空間
<?php namespace Math {
class Complex { //...code... function __construct() { print("hey"); } } }
$m = new Math::Complex(); ?>
注:在實際應(yīng)用中,你可以在不同的名稱空間里定義同名的類來完成不同的任務(wù)(但接口要相同) <翻譯完畢>
終天蹩手蹩腳地翻譯完了,有些翻譯不正確的地方,如術(shù)語、對原文的理解,敬請一一指出,共同完善,共同開始PHP5的學(xué)習(xí)、探討。。。
|