博主信息
博文 38
粉丝 0
评论 0
访问量 38082
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
使用方法重载与call_user_func_array()模拟TP框架的链式查询后期静态绑定的原理与使用场景分析——2018年9月8日 07:44:17
图图的博客
原创
856人浏览过

使用方法重载与call_user_func_array()模拟TP框架的链式查询

实例

<?php
/**
 * 跨类调用
 */
header('content-type:text/html;charset=utf-8');
require 'Query.php';
//数据库链式操作
$res = Db::table('player')
        ->fields('id,name,age,salary')
        ->where('salary > 0')
        ->select();
class Db{
    public static function __callStatic($name, $arguments)
    {
        // TODO: Implement __callStatic() method.

        // 调用回调函数,并把一个数组参数作为回调函数的参数。
        //call_user_func_array([对象, 方法],[])
        return call_user_func_array([(new Query1()),$name],$arguments);
    }
}
//print_r($res);
$table = '<table border="1" width="60%" align="center" cellpadding="5"cellspacing="0">';
$table .= '<caption style="padding-bottom: 10px">球员信息表</caption>';
$table .= '<tr style="background: #43e6ff"><th>' .'ID'.'</th><th>'.'姓名'.'</th><th>'.'年龄'.'</th><th>'.'薪资'.'</th></tr>';
foreach($res as $p){
    $table .='<tr align="center">';
    $table .='<td>'.$p['id'].'</td>';
    $table .='<td>'.$p['name'].'</td>';
    $table .='<td>'.$p['age'].'</td>';
    $table .='<td>'.$p['salary'].'</td>';
    $table .='</tr>';

}
$table .= '</table>';
echo $table;

运行实例 »

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

后期静态绑定的原理与使用场景分析:
代码执行分两个阶段,前期:编译阶段,后期:运行阶段。
后期静态绑定就是执行代码时解析调用方法时的类,而不是实际运行的类,用于重写父类中的静态方法

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学