注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > WEB开发 > PHP 内容正文:利用PHP的OOP特性实现数据保护

利用PHP的OOP特性实现数据保护

发布时间:2006-06-07 23:18:21 来源:天极开发 网友评论 0 条
  在PHP 4中,声明变量通常使用var,而在PHP 5中,可使用面向对象编程(OOP)的特性来自定义数据的可见性--即可访问性,可见性在此与变量作用域非常类似,但提供了更好的控制机制,有以下三种类型的可见性修饰符:

  Public(默认)--变量可在全局范围内访问或修改。
  Protected--变量只能在类本身及直接派生(使用extends语句)类内访问或修改。
  Private--变量只能在类内部访问或修改。

  与接口实现类似,在程序中违反这些规则将会导致严重的错误;且与接口类似的是,它们的存在纯粹是为了方便程序员。但这并不意味着可以忽略它们,指定某个类成员变量的可见性,可保护对象内的数据免受外界影响。

  假设有一个MySqlDB类,一个$link变量在其中声明为private,这意味着这个变量只能从对象内部使用$this变量访问,这防止了类外其他对象或函数的意外覆盖,在此,我们将使用可见性特性帮助我们创建一个query对象。

  你可以把query当作一个单独的实体,它可以执行,并且返回结果。一些数据库系统也具有存储过程,存储过程与函数很相似,它们存储查询语句,并在调用时接受相应的参数,但MySQL在5.1版本之前并没有提供类似功能,某些其他类型的数据库管理系统也没有。

  在本文中,将把上述两个特性结合进示例的query对象中,示例将模拟一个基本的存储过程,并在内部保存结果指针。目前,重点是从对象中执行query,在此可以调用MySqlDB对象的query()函数。

  可在query对象中定义如下的public函数:

  __construct()--构造函数接受一个包含了实现DB接口对象实例引用的参数。

  prepare()--函数prepare()初始化query的存储过程。它可能包含一个或多个有限的占位符,而其将会作为参数传递给execute()函数。占位符定义为与参数个数有关的一个冒号紧跟一个整数及与参数类型有关的一个字母。

  包含占位符的一个简单的query看起来像以下这样:

SELECT col1,col2 FROM table_name WHERE col1=:1I

  execute()--函数execute()将执行query。如果它被prepare()函数过早地初始化为一个存储过程,任何传递进来的参数都会被作为存储过程的执行参数,否则,第一个参数只会被作为查询文本。函数execute()将返回执行查询后的结果。

  compile()--函数compile()与函数execute()类似,实际上,query并没有执行,而是替换查询字符串中所有占位符,接受存储过程的参数,并返回query的编译版本。

  受保护的成员

  正如上面所提到的,可见性的概念可用于隐藏对象的内部工作,保护内部工作所需的数据完整性。前面已经解释,query返回的结果指针将会保存为protected属性,在此使用保护成员是因为从query对象派生出来的特定数据库query对象可能会重载某些核心功能。

  深掘代码

  理论说够了,现在开始编写代码,首先,创建一个例1所示的模板:

  例1:数据库query类的一个模板

class DBQuery
{
 /**
 *保存一个实现了DB接口对象的引用。
 */
 protected $db;

 /**
 *如果是一个存储过程,设为true。
 */
 protected $stored_procedure = false;

 /**
 *保存一个删除了所有字符串的query。
 */
 private $query;

 /**
 *用于在SQL中匹配引号。
 */
 private static $QUOTE_MATCH = "/(".*(?db = $db;
}

public function prepare($query)
{
 $this->stored_procedure = true;
}

public function compile($args)
{}

public function execute($query)
{}
}

点击查看迅雷被封杀事件专题
相关文章
  • 如何利用PHP和CSS改变网页文字大小
  • 利用PHP和AJAX创建RSS聚合器
【评论】【收藏本文】【打印】【关闭】
上一篇文章:基于PHP和AJAX创建RSS聚合器
下一篇文章:PHP5 OOP编程之代理与定制异常
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
结合AJAX进行PHP开发之入门
结合AJAX进行PHP开发之入门
推荐阅讯
  • 实例学习PHP之表单处理篇(一)
  • 利用PHP和AJAX创建RSS聚合器
  • PHP技术集合
  • PHP中实现图片的锐化
  • PHP环境下配置在线编辑器FCKeditor
  • 用PHP控制您的浏览器cache
  • 通过缓存数据库结果提高PHP性能
  • 实例学习PHP之投票程序篇(一)
  • PHP新手总结的PHP基础知识
  • 大型系统上PHP令人不爽的九大原因
阅读排行
  • 1.实例学习PHP之表单处理篇(一)
  • 2.实例学习PHP之表单处理篇(二)
  • 3.结合AJAX进行PHP开发之入门
  • 4.PHP V5.0.5下载列表
  • 5.用PHP读取和编写XML DOM
  • 6.使用"函数递归"实现动态树型菜单
  • 7.PHP环境下配置在线编辑器FCKeditor
  • 8.利用PHP和AJAX创建RSS聚合器
  • 9.实例学习PHP之投票程序篇(二)
  • 10.实例学习PHP之投票程序篇(一)
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载