PHP5 OOP編程中的代理與異常_PHP教程
推薦:詳細(xì)介紹php5編程中的異常處理1 首先是try,catch <?php $path = "D:\\in.txt"; try //檢測異常 { file_open($path); } catch(Exception $e) //捕獲異常 { echo $e->getMessage(); } function
異常處理是PHP 5中的另外一個(gè)新特征,當(dāng)與OOP聯(lián)用時(shí),它能夠?qū)崿F(xiàn)良好地控制錯(cuò)誤處理和報(bào)告。
一、 DBQuery對(duì)象
現(xiàn)在,我們的DBQuery對(duì)象簡單地模仿一個(gè)存儲(chǔ)過程—一旦被執(zhí)行,即返回一個(gè)必須進(jìn)行保存的結(jié)果資源;并且如果你想使用該結(jié)果集上的函數(shù)(例如num_rows()或fetch_row())的話,你必須傳遞MySqlDB對(duì)象。那么,如果由DBQuery對(duì)象來實(shí)現(xiàn)MySqlDB對(duì)象(其設(shè)計(jì)目的是對(duì)一個(gè)執(zhí)行查詢的結(jié)果進(jìn)行操作)實(shí)現(xiàn)的函數(shù),效果如何呢?讓我們繼續(xù)使用上一篇示例中的代碼;并且讓我們假定,現(xiàn)在由DBQuery對(duì)象管理我們的結(jié)果資源。DBQuery類的源碼如列表1所示。
列表1.使用DBQuery類。
| require 'mysql_db.php'; require_once 'query.php'; $db = new MySqlDb; $db->connect('host', 'username', 'pass'); $db->query('use content_management_system'); $query = new DBQuery($db); $query->prepare('SELECT fname,sname FROM users WHERE username=:1S AND pword=:2S AND expire_time<:3I'); try { if($query->execute("visualad", "apron", time()))->num_rows() == 1) { echo('Correct Credentials'); } else { echo('Incorrect Credentials / Session Expired'); } } catch (QueryException $e) { echo('Error executing query: ' . $e); } |
上面修改后的代碼中我們最感興趣的是,catch語句和execute語句。
· execute語句不再返回一個(gè)結(jié)果資源,現(xiàn)在它返回DBQuery對(duì)象本身。
· DBQuery對(duì)象現(xiàn)在實(shí)現(xiàn)num_rows()函數(shù)—我們從DB接口中已經(jīng)熟悉。
· 如果查詢執(zhí)行失敗,它拋出一個(gè)QueryException類型的異常。當(dāng)被轉(zhuǎn)換成一個(gè)字符串時(shí),它將返回發(fā)生的錯(cuò)誤的細(xì)節(jié)信息。
為此,你需要使用代理。事實(shí)上,你在我們的DBQuery對(duì)象中已經(jīng)使用代理了,但是現(xiàn)在將更為深入地使用它來把它與MySqlDB對(duì)象緊密綁定。該DBQuery對(duì)象已經(jīng)被使用一個(gè)實(shí)現(xiàn)DB接口的對(duì)象初始化,并且它已經(jīng)包含一個(gè)成員函數(shù)execute—由它調(diào)用DB對(duì)象的query()方法來執(zhí)行該查詢。這個(gè)DBQuery對(duì)象本身并不實(shí)際地查詢數(shù)據(jù)庫,它把這項(xiàng)任務(wù)交由DB對(duì)象來完成。這就是代理,其實(shí)是一個(gè)進(jìn)程—借助于這個(gè)進(jìn)程,通過把消息發(fā)送給另一個(gè)實(shí)現(xiàn)相同的或類似行為的對(duì)象,一個(gè)對(duì)象可以實(shí)現(xiàn)一個(gè)特別的行為。
分享:Zend Framework 入門——頁面布局Zend Framework 的頁面布局模塊——Zend_Layout——既可以跟 MVC 一起使用,也可以單獨(dú)使用。本文只討論與 MVC 一起使用的情況。 1. 布局腳本 在 application/views 下
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- php curl的深入解析
- PHP時(shí)間戳與日期之間轉(zhuǎn)換的實(shí)例介紹
- 詳解PHP內(nèi)置訪問資源的超時(shí)時(shí)間 time_out file_get_contents read_file
- PHP實(shí)例:精確到每一秒鐘的在線人數(shù)顯示代碼
- PHP教程之入門需要掌握的幾種功能代碼
- 小荷才露尖尖角 中國的PHP社群介紹
- cmd運(yùn)行php
- 用PHP程序?yàn)樽约壕W(wǎng)站打造一個(gè)搜索引擎
- 加速動(dòng)態(tài)網(wǎng)站 MySQL索引分析和優(yōu)化
- 深入phpMyAdmin的安裝與配置的詳細(xì)步驟
- 相關(guān)鏈接:
- 教程說明:
PHP教程-PHP5 OOP編程中的代理與異常
。