博主信息
博文 42
粉丝 2
评论 0
访问量 64682
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
案例:PHP原生微博(Db类的完成 前端页面php代码完善)
小明的博客
原创
993人浏览过

今天,将Db类完善,同时在前端优化php代码,然整个系统跑起来。

一、Db类完善,前端优化

  • 实现limit功能

    这里同之前的功能差不多,也是在完善查询语句,这里需要给limit初始化,然后在新增limit方法,最后在biuld_sql中的查询语句构建方法中添加limit语句

实例

//查询表
    public function table ($table) {
        $this->init();
        $this->field = '*';
        $this->order = '';
        $this->where = '';
        $this->table = $table;
        $this->limit = 0;
        return $this;
    }

//limit
    public function limit ($limit) {
        $this->limit = $limit;
        return $this;
    }

 //查询sql
        if ($type == 'select') {
            $sql = "SELECT {$this->field} FROM {$this->table}";
            $this->where && $sql .= " WHERE {$this->where}";
            $this->order && $sql .= " ORDER BY {$this->order}";
            $this->limit && $sql .= " LIMIT {$this->limit}";
        }

运行实例 »

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

  • 优化前端代码

    1、查询用户通过用户登陆确认后,传过来的id,id查询得出用户的信息,这里写死了

    

实例

// 用户
  $user = $db->table('users')->where('id=1')->item();

运行实例 »

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

    2、微博列表,通过查询uid来得出该id下的微博信息

实例

  $weibo_list = $db->table('weibo')->where('uid=1')->order('id desc')->lists();

运行实例 »

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

    3、在前端渲染微博列表时,除了需要weibo表里的信息,同时还需要发表该微博用户的信息(头像、用户名等等),这里就需要通过自定义索引user将该uid对应的id的用户信息作为值传给user索引

实例

foreach ($weibo_list as $key => $value) {
      $weibo_list[$key]['user'] = $db->table('users')->where('id='.$value['uid'])->item();
  }

运行实例 »

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

    4、上述方法可以实现功能,但是如果上线,作为企业及应用的话还存在问题,那就是如果微博多了以后,比如10000条,其实也不算多,那么这个循环就要执行10000次查询,对服务器负担太重,需要优化。

    怎么优化?就是先在weibo表中循环,将所有的uid放在一个数组中,然后将这些uid的用户信息放在user_list中

    

实例

//uid集合
    $uids = [];
    foreach ($weibo_list as $k=>$val) {
        if (!in_array($val['uid'], $uids)) {
            $uids[] = $val['uid'];
        }
    }
    //用户信息
    $user_list = $db->table('users')->where('id in ('***plode(',', $uids).')')->cates('id');

运行实例 »

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

    5、还可以进一步优化,可以将用户信息中的id放在user_list中的索引,这样就可以方便将微博的uid和用户的id一一对应,然后将用户信息放在weibo的自定义索引user中

实例

//自定义index
    public function cates ($index) {
        $lists = $this->lists();
        //将用户id设为数组的key
        $temp = [];
        foreach ($lists as $k=>$val) {
            $temp[$val[$index]] = $val;
        }
        $lists = $temp;
        return $lists;
    }
    //weibo_list的uid和user_list里的id是一一对应的所以
  foreach ($weibo_list as $key => $value) {
    $weibo_list[$key]['user'] = $user_list[$value['uid']];
}

运行实例 »

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

三、总结

  • 至此原生微博的功能基本完成,剩下的连接池,服务器用配置文件加载,分页功能的实现,今后用到时在研究;

  • 企业级的应用需要特别注意数据库的操作,不用jion连表操作,不存储过程。

  • 最后总结学习的过程,还是很枯燥的,尤其是最近生活和工作中出现的一些不如意,打破了平静的心。平静不急躁不功利不强求不畏难的情绪是高效学习应有的情绪准备,这段时间没有。自己也在积极的收拾情绪,花了一些时间,或者说是时间的冲刷让一些心中的执念淡化了,就像之前的种种,我一旦放下,就会不再留恋,甚至有点绝情。现在应该向前看,用一个个目标的确立和实现,埋葬过去的不顺与抗争。当前已经确立了一个有清晰轮廓细节不细的目标,和行动路线。目标确定的同时要确定行动路线,哪怕这个路线很笼统,也要将目标和路线同时确立,这点很重要!!!至于路线如何清晰?还是那句话,边走边看,摸石头过河~!


批改状态:未批改

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

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

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