利用PHP的OOP特性实现数据保护
的的字符串序列。在query的编译期间,过程占位符会首先被替换,接着把字符串放回query中,这是通过preg_replace()函数,和另一个用作preg_replace()函数的helper回调函数完成的。
例2:prepare()函数 /** private function sql_quote_replace($match) 在此留意对静态QUOTE_MATCH属性private的使用,还有quote_store属性和sql_quote_replace()函数。相比protected,在此定义为private更能确保任何重载query类prepare()方法的子类使用其自身的机制来剔除引号。 函数compile 下一步是构建compile()与execute()函数。 函数compile()如例3中所示,功能如下: ·接受的参数数目可变(即可变参数),其将匹配query中的占位符。 ·检查占位符是否为正确的数据类型,并把它替换为参数中的值。 ·把query作为字符串返回,但不执行它。 ·如果query对象没有使用prepare()函数初始化为一个存储过程,将抛出一个异常。 例3:compile()函数 /** /* 替代参数 */ return $this->add_strings($query); //把字符串放回query中 /** return str_replace($searches, $this->query_strings, $string); /** /* 抛出一个异常 */ /* 可以在此添加别的类型,如日期和时间。 */ 函数compile()中使用了两个额外的函数,其中compile_callback()函数是作为在preg_replace()函数调用中的回调函数,每一次在query中查找到占位符,并把它替换为传给compile函数的值时,都会执行它。 函数execute 最后,还需要构建函数execute(),函数execute()编译query并且使用DB对象执行它,而DB对象在此是用于初始化DBQuery对象的。请注意在例4中,是怎样运用函数call_user_func_array()来得到编译后的query的,而这样做的原因是,函数execute()要直到运行时,才能确定 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |