类常量用const定义,访问方法一样用 self:: 与静态属性调用一样
属性重载可以用 __get(); __set($name,$value); __isset($name); __unset($name);
方法重载:__call(); __callStatic();
创建一个方法以调用该类中不存在的一个方法时使用此函数 __call();
创建一个静态方法以调用该类中不存在的一个方法时使用此函数 __callStatic();
用call_user_args_array()访问类中的方法
访问类中方法call_user_args_array([类名,'方法名'],[值value]);
访问类中静态方法call_user_args_array([__NAMESPACE.'\类名:方法名','方法名'],[值value]);
用完整类名访问静态方法call_user_args_array([Test:class,'方法名'],[value])
演示效果网站 pc.wenbus.cn/0801/index.php
实例
<?php namespace demo1; require 'data.php'; use demo2\sql; class Db { //创建连接对象 protected static $pdo = null ; //连接方法 public static function connection (){ self::$pdo = new \PDO('mysql:host=127.0.0.1;dbname=php','root','root'); } //创建一个静态方法以调用该类中不存在的一个方法时使用此函数 public static function __callStatic($name, $arguments) { //连接数据库 self::connection(); //实例化 $data = new sql(self::$pdo); //执行查询 return call_user_func_array([$data,$name],$arguments); } } $result = Db::table('staff') ->field('staff_id,name,position,age,sex') ->where('staff_id> 0') ->select(); // foreach ($result as $data){ // echo '<pre>'.print_r($data).'<br>'; // } // ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>链式数据库查询</title> </head> <body> <table border="1px solid black"> <tr> <td style="width: 100px;text-align: center">序号</td> <td style="width: 100px;text-align: center">姓名</td> <td style="width: 100px;text-align: center">性别</td> <td style="width: 100px;text-align: center">职业</td> <td style="width: 100px;text-align: center">年龄</td> </tr> <?php foreach ($result as $data) {?> <tr> <td><?php echo $data['staff_id'] ?></td> <td><?php echo $data['name'] ?></td> <td><?php echo $data['sex'] ?></td> <td><?php echo $data['position'] ?></td> <td><?php echo $data['age'] ?></td> </tr> <?php } ?> </table> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php namespace demo2; class sql { public $pdo = null; //数据表 public $table ; //字段名 public $field = '*'; //查询条件 public $where; //显示数量 public $limit; //构造方法 public function __construct($pdo) { $this->pdo = $pdo; } //设置表名 public function table($tableName){ $this->table = $tableName; return $this; } //设置字段名 public function field($field='*'){ $this->field = empty($field) ? '*' : $field; return $this; } //设置查询条件 public function where($where= ''){ $this->where = empty($where) ? $where : ' WHERE '.$where; return $this; } //设置显示数量 public function limit($limit= ''){ $this->limit = empty($limit) ? $limit : ' LIMIT '.$limit; return $this; } //sql语句 public function select(){ $sql = 'SELECT ' . $this->field . ' FROM ' . $this->table .$this->where .$this->limit; $stmt = $this->pdo->prepare($sql); $stmt->execute(); // die($stmt->debugDumpParams()); return $stmt->fetchAll(\PDO::FETCH_ASSOC); } }
运行实例 »
点击 "运行实例" 按钮查看在线实例