首頁 > php教程 > PHP开发 > 利用PHP的OOP特性實現資料保護(3)

利用PHP的OOP特性實現資料保護(3)

黄舟
發布: 2016-12-21 11:00:51
原創
1213 人瀏覽過

函式execute

  最後,還需要建構函式execute(),函式execute()編譯query並且使用DB物件執行它,而DB物件在此是用於初始化DBQuery物件的。請注意在例4中,是如何運用函數call_user_func_array()來得到編譯後的query的,而這樣做的原因是,函數execute()要直到執行時,才能確定傳遞給它的參數數目。

  例4:execute()函數

/**
*
* 执行当前query,并把占位符替换为所提供的参数。
*
* @param mixed $queryParams,... Query parameter
* @return resource A reference to the resource representing the executed query.
*/
public function execute($queryParams = '')
{
 //例如:SELECT * FROM table WHERE name=:1S AND type=:2I AND level=:3N
 $args = func_get_args();

 if ($this->stored_procedure) {
  /* 调用函数compile以取得query */
  $query = call_user_func_array(array($this, 'compile'), $args);
 } else {
  /* 如果存储过程未被初始化,就把它作为标准query执行。*/
  $query = $queryParams;
 }

 $this->result = $this->db->query($query);

 return $this->result;
}
登入後複製

 全部整合起來

  為演示怎樣使用query對象,下面構造了一個小例子,其將把DBQuery對像作為存儲過程使用,並檢查怎麼使用了正確的用戶名與密碼,請看例5:

  例5:

require 'mysql_db.php5';
require_once 'query2.php5';


$db = new MySqlDb;
$db->connect('host', 'username', 'pass');
$db->query('use content_management_system');

$query = new DBQuery($db);

$query->prepare(&#39;SELECT fname,sname FROM users WHERE username=:1S AND pword=:2S AND expire_time<:3I&#39;);

if ($result = $query->execute("visualad", "apron", time())) {
 if ($db->num_rows($result) == 1) {
  echo(&#39;凭证正确。&#39;);
 } else {
  echo(&#39;凭证不正确,会话已过期。&#39;);
 }
} else {
 echo(&#39;执行query时发生错误:&#39; . $db->error());
}
登入後複製

 在本文中,你已看到瞭如何在聲明類別變數時,利用存取修飾符private、protected和public,保護資料和限制資料物件的可見性,同時,在PHP 5中,這些概念也可用於其他的資料類,保護其重要的內部資料。

 以上就是利用PHP的OOP特性實現資料保護(3)的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)! 


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板