ホームページ  >  記事  >  php教程  >  PHPのOOP機能を活用してデータ保護を実現する(3)

PHPのOOP機能を活用してデータ保護を実現する(3)

黄舟
黄舟オリジナル
2016-12-21 11:00:511205ブラウズ

関数execute

最後に、関数execute()を構築する必要があります。関数execute()はクエリをコンパイルし、DBQueryオブジェクトの初期化に使用されるDBオブジェクトを使用して実行します。例 4 では、コンパイルされたクエリを取得するために関数 call_user_func_array() がどのように使用されているかに注意してください。その理由は、関数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;
}

すべて統合

クエリ オブジェクトの使用方法を示すために、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 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。