第1次親密接觸PHP5(2)
發(fā)表時(shí)間:2024-01-28 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]接上篇,繼續(xù)硬著頭皮往下翻。。。。:)類(lèi)型指示 在PHP5,你可以在一個(gè)類(lèi)的方法中指明其參數(shù)必須為一個(gè)類(lèi)的實(shí)例:Example 10: 類(lèi)型實(shí)例<?phpclass foo // code ...class bar public function process_a_foo(foo ...
接上篇,繼續(xù)硬著頭皮往下翻。。。。:)
類(lèi)型指示
在PHP5,你可以在一個(gè)類(lèi)的方法中指明其參數(shù)必須為一個(gè)類(lèi)的實(shí)例:
Example 10: 類(lèi)型實(shí)例
<?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);
?>
可以看到,在變量前指定一個(gè)類(lèi)名,讓PHP5知道這個(gè)變量將是一個(gè)類(lèi)的實(shí)例
靜態(tài)成員
靜態(tài)成員和靜態(tài)方法在OOP中一般稱為"類(lèi)變量"和"類(lèi)方法"。
一個(gè)"類(lèi)方法"可以在對(duì)象沒(méi)有被實(shí)例化的時(shí)候調(diào)用
一個(gè)"類(lèi)變量"可以在對(duì)象沒(méi)有被實(shí)例化的時(shí)候訪問(wèn)(也不需要對(duì)象的方法來(lái)調(diào)用)
Example 11: 類(lèi)變量和類(lèi)方法
<?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");
?>
* 異常處理
異常處理是開(kāi)發(fā)語(yǔ)言中公認(rèn)的處理異常錯(cuò)誤的方法,如在JAVA和C++中。
PHP5用"try"和"catch"關(guān)鍵字來(lái)捕獲異常。
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)有錯(cuò)誤的時(shí)候執(zhí)行"catch"區(qū)域的代碼。
在"catch"區(qū)域你應(yīng)當(dāng)指明執(zhí)行異常的對(duì)象,這樣可以使我們的結(jié)構(gòu)更清晰
自定義異常處理
你可以在程序中定義自己習(xí)慣的捕獲異常錯(cuò)誤的代碼。
非常簡(jiǎn)單,你僅僅需要繼承一個(gè)異常類(lèi),在這個(gè)類(lèi)中需要一個(gè)構(gòu)造器和一個(gè)叫g(shù)etMessage的方法而已:
Example 13: 自定義異常類(lèi)
<?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) "來(lái)拋出異常。如果在try{}這樣的區(qū)域中出現(xiàn)異常,PHP5就會(huì)跳入
catch區(qū)域來(lái)拋出異常。
名稱空間
"名稱空間"可以讓你方便地調(diào)用一組類(lèi)或方法:
Example 14: 名稱空間
<?php
namespace Math {
class Complex {
//...code...
function __construct() {
print("hey");
}
}
}
$m = new Math::Complex();
?>
注:在實(shí)際應(yīng)用中,你可以在不同的名稱空間里定義同名的類(lèi)來(lái)完成不同的任務(wù)(但接口要相同)
<翻譯完畢>
終天蹩手蹩腳地翻譯完了,有些翻譯不正確的地方,如術(shù)語(yǔ)、對(duì)原文的理解,敬請(qǐng)一一指出,共同完善,共同開(kāi)始PHP5的學(xué)習(xí)、探討。。。