ThinkPHP5、Swoole、 Laravel、,Phalcon,並理解其生命週期

ThinkPHP5

1、入口文件
    虛擬主機目錄/public/index.php
2、引入啓動文件
    虛擬主機目錄/thinkphp/start.php
3、運行App下面的run方法
    虛擬主機目錄/thinkphp/library/think/App.php -> run()
4、實例化$request對象
    虛擬主機目錄/thinkphp/library/think/App.php -> Request::instance(); 
5、進行路由檢測
    虛擬主機目錄/thinkphp/library/think/App.php -> self::routeCheck($request, $config); 
6、執行exec方法
    虛擬主機目錄/thinkphp/library/think/App.php -> self::exec($dispatch, $config); 
7、根據dispatch數組裏面的type類型打開相對應的控制器
    虛擬主機目錄/thinkphp/library/think/App.php -> self::module($result, $config, $convert = null); 
8、調用Loader::controller通過反射機制加載控制器對象
    虛擬主機目錄/thinkphp/library/think/App.php -> Loader::controller(...); 
9、調用請求方法invokeMethod($method, $vars = [])
        虛擬主機目錄/thinkphp/library/think/App.php -> self::invokeMethod(...);
        
10、調用$response對象中的send方法把數據輸出瀏覽器中
        虛擬主機目錄/thinkphp/library/think/Response.php -> send(); 
        

Swoole Server 四層生命週期

  • 程序全局期:

    • Server->start 之前創建的對象資源,持續駐留內存,worker共享。
    • 全局期代碼在 Server 結束時纔會釋放,reload 無效。
  • 進程全局期:

    • Server 啓動後創建多個進程,它們內存空間獨立,非共享內存。
    • worker 進程啓動後(onWorkerStart)引入的代碼在進程存活期有效,reload 會重新加載。
  • 會話期:

    • 在 onConnect 或 第一次onReceive 時創建,onClose 時銷燬。
    • 客戶端連接後創建的對象會常駐內存,直到此客戶端離開才銷燬。
  • 請求期:

    • 在 onReceive/onRequest 收到請求開始,直到發送 Response 返回。
    • 請求期創建的對象會在請求完成後銷燬,和 fpm 程序中的對象一樣。



Laravel

生命週期

  • 1.Web 服務器將請求發送到項目的 public/index.php 文件。

  • 2.PHP 解釋器接收到請求後,解釋執行 index.php 文件中的 PHP 代碼。此時,由 Componser 包管理器生成的自動加載文件被加載。

  • 3.創建Laravel 服務容器實例,引導安裝 laravel 組件。

  • 4.HTTP 或 Console 內核接收到 HTTP 請求,加載 Laravel 服務提供者,同時,將請求分發給路由器執行。

  • 5.路由器將渲染視圖文件,並生成響應數據給 Web 服務器。

laravel的重點

  • laravel5之前成爲IoC(Inversion of Control /ɪnˈvɜːrʒn/)、
  • 依賴注入(Dependency Injection /dɪˈpendənsi/ /ɪnˈdʒekʃn/ )
  • 反射解決方案 ReflectionClass (/rɪˈflekʃn/ )反射是一種在運行時檢查類和方法的能力,遞歸查找類以及類的依賴。
  • 契約即接口interface,接口實際上並不做任何事情,只是類的模版
  • 服務提供者providers,註冊服務到容器中的
  • 框架目錄,主要目的是分層:
    • 事件監聽器、錯誤處理器、請求驗證器
  • 隊列處理器、路由過濾器、用戶認證、緩存和會話驅動
  • 設計模式
    • 單一職責原則
      一個類的邊界和職責應當是十分狹窄且集中的
    • 開放封閉原則
      又稱開閉原則,規定代碼對擴展是開放的,對修改是封閉的
    • 里氏替換原則
      規定對象可以被其子類的實例所替換,並且不會影響到程序的正確性
    • 接口隔離原則
      不應該強制接口的實現依賴於它不使用的方法
    • 依賴反轉原則
      它規定高層次的代碼不應該依賴低層級的代碼

Phalcon

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章