(7)PHP框架开发-重构以前的框架

   这段时间终于有空了,所以来重构一下之前的框架。现在看原来的框架发现非常乱,毫无规范,看到脑壳疼。
   进入正题,这次的重构主要更改如下:

  1. 文件夹首字母大写
  2. 整理核心类的目录结构,添加多了一个Bootstrap引导类来管理多个核心模块
  3. 将之前的全局变量$_GLOBALS全部去除,换为Core类当容器来保存

目录结构分析

这里写图片描述
之前项目的代码全部都是挤在Core目录下,而且Core就是核心代码根目录了。可以看这篇文章来对比传送门。现在首先是对核心根目录进行提取出来,这样子就能够扩展更多的功能代码出来,结构也更加清晰了。

流程结果图如下:
这里写图片描述

变化代码分析

Rice\Core\Core

这个类中的全局对象将$_GLOBALS这个全局注册对象去除掉了,取代的是注入的形式。

    /*
     * 设置全局类
     */
    static public function set($key, $item) {

        if (!isset(self::$_map[$key])) {
            self::$_map[$key] = $item;
        }
        return self::$_map[$key];
    }

    /*
     * 提取全局类
     */
    static public function get($key) {

        if (isset(self::$_map[$key])) {

            if (is_object(self::$_map[$key])) {
                return self::$_map[$key];
            } else if (is_string(self::$_map[$key])) {
                $reflection = new \ReflectionClass(self::$_map[$key]);
                $ins = $reflection->newInstanceArgs();
                self::$_map[$key] = $ins;
                return self::$_map[$key];
            }
        }
        return null;
    }

    static public function seting(){
        //配置类
        self::set('Config','\Rice\Core\Config');
        //模板变量
        self::set('Cache','\Rice\Core\Cache');
        //信息变量
        self::set('Infos','\Rice\Core\Infos');

        Core::get('Config');
    }

   这个类采用直接传命名空间的形式来对对象进行保存起来,这样子的做法相对于直接使用$_GLOBALS好很多了,而且代码相对比较可控,添加全局对象直接使用set函数就ok啦。
   使用这种方法之后,相对于在视图文件中的写法也更加的飘逸了。
以前写法

global $cache;

现在写法

$cache = \Rice\Core\Core::get('Cache');

哈哈,你们认为哪种更好呢?
在模板的使用上也更加人性化,减少代码量。
以前写法

$cache->getVal('test');

现在写法

$cache->test;
$cache->get('test');

添加多了一个对变量的支持,也将获取的函数简化,适应对于不同代码习惯的人们。

基本的修改也就是这些了,还有更多的细节可以参考代码。

github https://github.com/dmf-code/Rice

之前的微信水果商城代码也会逐步对其更新,想了解的话请关注我的github。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值