这里有新鲜出炉的 PHP 设计模式,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 php 数据库操作 model 类, 使用__call 方法实现了数据的查询功能, 需要的朋友可以参考下
本文实例讲述了 php 数据库操作 model 类。分享给大家供大家参考,具体如下:
该数据库操作类使用__call() 方法实现了数据的查找功能。
代码如下:
- <?php
- /*
- 作者 : shyhero
- */
- define("HOSTNAME","127.0.0.1");
- define("USERNAME","root");
- define("PASSWORD","");
- define("DATANAME","class");
- class Model{
- private $link;
- private $tableName;
- private $zd;
- private $method = array(
- "where" => "",
- "order" => "",
- "limit" => "",
- "group" => "",
- "having" => ""
- );
- public function __construct($tableName){
- $this -> tableName = $tableName;
- try{
- $this -> link = mysqli_connect(HOSTNAME,USERNAME,PASSWORD,DATANAME);
- mysqli_set_charset($this -> link,"UTF8");
- }catch(Exception $e){
- echo "数据库连接失败";
- }
- $this -> desc();
- }
- public function __destruct(){
- mysqli_close($this -> link);
- }
- public function desc(){
- $sql = " desc {$this -> tableName}; ";
- $res = mysqli_query($this -> link,$sql);
- $arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
- for($i = 0 ;$i < count($arr);$i++){
- $brr[] = $arr[$i]['Field'];
- }
- $this -> zd = $brr;
- return $brr;
- }
- public function __call($name,$value){
- $name = strtolower($name);
- if(array_key_exists($name,$this -> method)){
- if($name == 'order'){
- $this -> method['order'] = " order by ".$value[0];
- }elseif($name == 'group'){
- $this -> method['group'] = " group by ".$value[0];
- }else{
- $this -> method[$name] = " {$name} ".$value[0];
- }
- }else{
- return "the method is not found!";
- }
- return $this;
- }
- public function method(){
- return " {$this -> method['where']} {$this -> method['order']} {$this -> method['limit']} {$this -> method['group']} {$this -> method['having']}; ";
- }
- public function find($a="*"){
- if(in_array("{$a}",$this -> zd) || $a == "*"){
- $sql = "select {$a} from {$this -> tableName} {$this -> method()} ";
- }else{
- $sql = "select * from {$this -> tableName}";
- }
- //return $sql;
- $res = mysqli_query($this -> link,$sql);
- $arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
- return $arr;
- }
- }
用法示例:
- <?php
- function __autoload($className){
- require($className.".class.php");
- }
- $a = new Model("stu");
- $a -> where("name = 'zhu'")->limit("5,10");
- var_dump($a -> find("name"));
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0805/341118.html