搜索
博主信息
博文 34
粉丝 1
评论 1
访问量 47656
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
写一个链式的数据库查询过程——2019年8月1日22时10分
嘿哈的博客
原创
905人浏览过

类常量用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);
        }

    }

运行实例 »

点击 "运行实例" 按钮查看在线实例



批改状态:合格

老师批语:链式操作, 也叫流式操作, 是面和对象编程才能实现的一种方案
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学