天天看點

(7)PHP架構開發-重構以前的架構

   這段時間終于有空了,是以來重構一下之前的架構。現在看原來的架構發現非常亂,毫無規範,看到腦殼疼。

   進入正題,這次的重構主要更改如下:

  1. 檔案夾首字母大寫
  2. 整理核心類的目錄結構,添加多了一個Bootstrap引導類來管理多個核心子產品
  3. 将之前的全局變量$_GLOBALS全部去除,換為Core類當容器來儲存

目錄結構分析

(7)PHP架構開發-重構以前的架構

之前項目的代碼全部都是擠在Core目錄下,而且Core就是核心代碼根目錄了。可以看這篇文章來對比傳送門。現在首先是對核心根目錄進行提取出來,這樣子就能夠擴充更多的功能代碼出來,結構也更加清晰了。

流程結果圖如下:

(7)PHP架構開發-重構以前的架構

變化代碼分析

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->getVal('test');
           

現在寫法

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

添加多了一個對變量的支援,也将擷取的函數簡化,适應對于不同代碼習慣的人們。

基本的修改也就是這些了,還有更多的細節可以參考代碼。

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

之前的微信水果商城代碼也會逐漸對其更新,想了解的話請關注我的github。