php的oop特性,利用PHP的OOP特性实现数据保护(3)

函数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('SELECT fname,sname FROM users WHERE username=:1S AND pword=:2S AND expire_time<:3i>

if ($result = $query->execute("visualad", "apron", time())) {

if ($db->num_rows($result) == 1) {

echo('凭证正确。');

} else {

echo('凭证不正确,会话已过期。');

}

} else {

echo('执行query时发生错误:' . $db->error());

}

在本文中,你已看到了如何在声明类变量时,利用访问修饰符private、protected和public,保护数据和限制数据对象的可见性,同时,在PHP 5中,这些概念也可用于其他的数据类,保护其重要的内部数据。

以上就是利用PHP的OOP特性实现数据保护(3)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值