国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php7的超簡單框架Beauty Framework

pubdreamcc / 2582人閱讀

摘要:使用其他的框架實現會非常的笨重,集成的內容太多,很多都不需要用到,所以借鑒其他框架寫了一個簡單實用的框架。配置類在開發環境和生產環境會使用不同的配置環境,在框架中可以創建環境來切換。其他實現了和采用一致性哈希訪問不同的實例。

框架的核心鏈路是從開始的請求路由解析到控制器的分發,model的數據交互到響應。
使用其他的框架實現會非常的笨重,集成的內容太多,很多都不需要用到,所以借鑒其他框架寫了一個簡單實用的框架。

先從路由開始來說:
1)路由
路由協議的規則是使用了正則表達的匹配,將不同的鏈接分發到不同的控制器上去,也支持調用匿名函數

// 第一種,使用匿名函數
App::router()->get("/", function () {
    echo "Beauty Framework.";
});
// 第二種,使用url分發到控制器
App::router()->post("/user/info/[0-9]+(/[0-9]+)?", "AppControllersUserController@getUserInfo");

其中實現的核心代碼:(是不是很簡單)

if (is_string($lostrcallable) && preg_match("!^([a-zA-Z0-9]+)@([a-zA-Z0-9]+)$!", $lostrcallable, $matches)) {
            $class  = $matches[1];
            $method = $matches[2];

            $callable = function () use ($class, $method) {
                static $obj = null;
                if ($obj === null) {

                    $obj = new $class;
                }

                return call_user_func_array(array($obj, $method), func_get_args());
            };
        }

2)控制器
沒有的,你指向的哪里,就可以在哪里進行請求處理,但是按照MVC,建議寫到Controller里,大家都是這么認為的,就這么做;

3)模型層
這里直接集成了Dao類,用于數據庫查詢操作,因為現在很多都在使用MySQL,就耦合地實現了MySQL的常規操作,因為數據庫的原生操作會引起很多的注入等問題,沒有支持直接Qquery的方式來做。

4)DAO層
因為很多情況下都要進行讀寫分離,但是要使用MySQL Proxy來實現,有太過笨重,所以實現了支持數據庫query根據不同的sql分別使用master和slave數據庫。
怎么做的?

就是根據不用的查詢操作直接劃分,Select查詢操作直接分到讀庫,Insert、Update、Delete直接分到寫庫。也可以直接使用onMasterConnection/onSlaveConnection直接指定.

看看Select怎么做的,這部分是實現邏輯:

    /**
     * 獲取查詢內容,以數組形式返回,數據內為array。
     *
     * @access public
     * @param integer|array $limit Array to define SQL limit in format Array ($count, $offset)
     *                             or only $count
     *
     * @return mixed Array of Clients
     */
    protected function get($limit = null)
    {
        $this->dbClient->setQueryChannel($this->channel);

        $results = $this->dbClient->arrayBuilder()->get($this->dbTable, $limit, $this->fields);
        $this->_reset();

        if ($this->dbClient->count == 0) {
            return [];
        }

        return $results;
    }

5)配置類
在開發環境和生產環境會使用不同的配置環境,在框架中可以創建.env環境來切換。在config中可以常規設置development和production,使用哪個環境就在.env設置哪個

; This is a environment configuration file
environment=development

當然也有一些公共的配置信息,可以在config文件里直接設置,這樣就可以在哪個環境都可以使用。

// 支持使用.連接訪問配置項,訪問的是config/app.php中的config key
BeautyCoreApp::config()->get("app.config");

6)請求響應
因為不需要View,只需要返回json數據,所以在Header直接寫死了text/json。 = =

其他實現了

memcache和redis采用一致性哈希訪問不同的實例。

validator驗證類

具體代碼都在github上 https://github.com/tigerk/Beauty

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29140.html

相關文章

  • [譯] Laravel 5 之美 - 單元測試

    摘要:事實上,這是討論測試的惟一一章。因此,在中沒有單一的測試方法。包含了這是的標準強調業務或特性測試是最流行的框架。然后我們在這個項目中使用進行單元測試。在隨后的章節中,將不再進行測試。 原文地址: Laravel 5.1 Beauty - Testing Note 本系列第四節內容. 本章會創建一個以后可以用到的項目便于以后我們的課程使用, 同時也會查課各種測試選項. 以后一段時間內會開...

    fuyi501 評論0 收藏0
  • 100天漲薪4k!從功能測試到自動化測試,我整理的超全學習指南!

    摘要:事實上,自動化測試是相對于手動的。減少人為的錯誤自動化測試是機器完成,不存在執行過程中人為的疏忽和錯誤,測試設計完全決定了測試的質量,可以降低減少人為造成的錯誤。而接口自動化測試,主要是對接口進行測試。 今年6月份,由于經濟壓力讓我下定決心進階自動化測試,已經24的我做了3年功能測試,坐標廣...

    TwIStOy 評論0 收藏0
  • 從未這么明白的設計模式(二):觀察者模式

    摘要:小麗總是會在朋友圈發布自己的各種生活狀態。總結我們從觀察者模式特點入手,通過一個案例,一步一步完善了觀察著的寫法,特點組后介紹了總已有的實現關注我,這里只有干貨同系列文章從未這么明白的設計模式一單例模式 showImg(https://segmentfault.com/img/remote/1460000018874501); 本文原創地址,我的博客:https://jsbintask...

    dockerclub 評論0 收藏0
  • 利用 Composer 一步一步構建自己的 PHP 框架(四)——使用 ORM

    摘要:引入了命名空間,這是規劃在中的功能,所以在一定程度上其實就是,的下一個版本是,即將發布,主要貢獻者是大名鼎鼎的鳥哥。使用修改為自動載入路由配置新增注意替換數據庫密碼修改無需改動。作者接受采訪時曾表示,是整個中最難實現的部分。 原文發表在我的個人網站:利用 Composer 一步一步構建自己的 PHP 框架(四)——使用 ORM 本教程示例代碼見 https://github.com...

    FreeZinG 評論0 收藏0
  • 輕量級高性能PHP框架ycroute

    摘要:數據交互層可選如果你習慣了層結構,你可以加載層,作為與數據庫交互的層,而層作為業務層。 YCRoute github: https://github.com/caohao-php... 目錄 框架介紹 運行環境 代碼結構 路由配置 過濾驗簽 控制層 加載器 模型層 數據交互dao層(可選) Redis緩存操作 數據庫操作 配置加載 公共類加載 公共函數 日志模塊 視圖層 RPC 介紹...

    dailybird 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<