日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

PHP5 OOP編程中的代理與異常(3)_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:詳細介紹php5編程中的異常處理
1 首先是try,catch <?php $path = "D:\\in.txt"; try //檢測異常 { file_open($path); } catch(Exception $e) //捕獲異常 { echo $e->getMessage(); } function

二、 類型提示(Type Hinting)

為了使代理能夠工作,我們需要確保DBQuery對象的$db變量是一個實現(xiàn)了DB接口的對象的實例。類型提示是PHP 5中的一種新特征,它能夠使你把函數(shù)參數(shù)強制轉(zhuǎn)換成特定類型的對象。在PHP 5之前,唯一的確保函數(shù)參數(shù)是一個特定對象類型的方法是使用PHP中所提供的類型檢查函數(shù)(也即是is_a())�,F(xiàn)在,你可以簡單地強制轉(zhuǎn)換對象類型—通過在函數(shù)參數(shù)的前面加上類型名。你已經(jīng)從我們的DBQuery對象中看到了類型提示,這樣可以確保一個實現(xiàn)DB接口的對象被傳遞到對象構(gòu)造器中。

public function __construct(DB $db)
{
 $this->db = $db;
}

當使用類型提示時,你不僅可以指定對象類型,還可以指定抽象類和接口。

三、 拋出異常

你可能已經(jīng)從上面的代碼中注意到,你捕獲的是一個稱為QueryException(我們將在后面實現(xiàn)這個對象)的異常。一個異常類似于一個錯誤,然而卻更具有一般性。描述一個異常的最好的方法是使用emergency。盡管一個emergency可以不會是“致命的”,但是還是必須處理它。當在PHP中拋出一個異常時,執(zhí)行的當前范圍很快地被終止,不管它是一個函數(shù),try..catch塊還是腳本本身。然后,該異常遍歷調(diào)用棧—終止每個執(zhí)行范圍,直到或者在一個try..catch塊中捕獲它或者它到達調(diào)用棧的頂部—此時它將生成一個致命錯誤。

異常處理是PHP 5中的另外一個新特征,當與OOP聯(lián)用時,它能夠?qū)崿F(xiàn)良好地控制錯誤處理和報告。一個try..catch塊是一種處理異常的重要機制。一旦被捕獲,腳本將會從異常被捕獲和被處理的代碼的下一行繼續(xù)執(zhí)行。

如果查詢失敗,你需要改變你的execute函數(shù)以拋出一個異常。你將拋出一個稱為QueryException的定制異常對象—導(dǎo)致錯誤的DBQuery對象被傳遞給它。

列表3.拋出一個異常。

/**
*執(zhí)行當前查詢
*
* 執(zhí)行當前查詢—用提供的參數(shù)代替任何點位符
* .
*
* @參數(shù): mixed $queryParams,... 查詢參數(shù)
* @返回:資源A—參考描述執(zhí)行查詢的資源。
*/
public function execute($queryParams = '')
{
 //例如: SELECT * FROM table WHERE name=:1S AND type=:2I AND level=:3N
 $args = func_get_args();
 if ($this->stored_procedure) {
  /*調(diào)用compile函數(shù)以得到查詢*/
  $query = call_user_func_array(array($this, 'compile'), $args);
 } else {
  /*一個存儲過程沒被初始化,因此,作為一種標準查詢來執(zhí)行之*/
  $query = $queryParams;
 }
 $result = $this->db->query($query);
 if (! $result) {
  throw new QueryException($this);
 }
 $this->result = $result;
 /* 注意現(xiàn)在我們怎么返回對象本身,這使我們能夠從這個函數(shù)的返回結(jié)果中調(diào)用成員函數(shù)
 */
 return $this;
}

分享:Zend Framework 入門——頁面布局
Zend Framework 的頁面布局模塊——Zend_Layout——既可以跟 MVC 一起使用,也可以單獨使用。本文只討論與 MVC 一起使用的情況。 1. 布局腳本 在 application/views 下

來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程