摘要:獲取應用并啟動分析設(shè)置應用名稱獲取本身實例想容器注冊單例設(shè)置應用基礎(chǔ)路徑其他初始化工作初始化容器其他初始化工作創(chuàng)建根據(jù)前面的知識掃盲可知道返回的真身是位于分析繼承這里就把中的函數(shù)都放在分析了服務的啟動主入口函
獲取應用并啟動
php bin/httpd
createHttpServer(); $server->start();
init/app.php
分析 Applicationvendor/zanphp/framework/src/Foundation/Application.php
public function __construct($appName, $basePath) { // 設(shè)置應用名稱 $this->appName = $appName; // 獲取 本身實例 static::setInstance($this); // 想容器注冊單例 ZanPHPContainer::getInstance()->instance(ApplicationContract::class, $this); // 設(shè)置 應用 基礎(chǔ)路徑 $this->setBasePath($basePath); // 其他初始化工作 $this->bootstrap(); } protected function bootstrap() { // 初始化 容器 $this->setContainer(); // 其他初始化工作 foreach ($this->bootstrapItems as $bootstrap) { $this->make($bootstrap)->bootstrap($this); } } /** * get http server. 創(chuàng)建 httpServer * * 根據(jù) 前面 的知識掃盲 可知道 返回的 真身 是 ZanPHPHttpServerServer * 位于 vendor/zanphp/http-server/src/Server.php * @return anFrameworkNetworkHttpServer */ public function createHttpServer() { /** @var Factory $factory */ $factory = make(Factory::class, ["server"]); $server = $factory->createHttpServer(); $this->server = $server; return $server; }分析 Server.phpvendor/zanphp/http-server/src/Server.php
vendor/zanphp/server-base/src/ServerBase.php/* * 繼承 ZanPHPServerBaseServerBase * 這里 就 把 ServerBase 中的 函數(shù) 都放在 Server 分析了 */ class Server extends ServerBase { // 服務的啟動主入口函數(shù) // 服務的啟動主入口函數(shù) // 服務的啟動主入口函數(shù) public function start(); // 服務 啟動初始化 包括 自定義的啟動項 配置在 init/ServerStart/.config.php function bootServerStartItem(); // worker 啟動初始化 包括 自定義的啟動項 配置在 init/WorkerStart/.config.php function bootServerStartItem(); // 請求處理函數(shù) public function onRequest(SwooleHttpRequest $httpRequest, SwooleHttpResponse $httpResponse) { // ... /** 請求處理類 后續(xù)講解 */ (new RequestHandler())->handle($httpRequest, $httpResponse); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/26068.html
前言 本系列源碼解讀已 http-demo 項目為例 目錄說明 showImg(https://segmentfault.com/img/bVX8wy?w=452&h=431); 主要關(guān)心 圖片箭頭指向目錄http://zanphpdoc.zanphp.io/we... bin: 服務啟動bin文件目錄 init: 應用初始化相關(guān) resource: 配置文件目錄,具體配置見 項目配置 src...
摘要:前言也許這是我們最關(guān)系的一個環(huán)節(jié)了。一個應用簡單來說無非就是請求和相應了。獲取你真的該補補協(xié)程的相關(guān)知識了。 前言 也許這是我們最關(guān)系的一個環(huán)節(jié)了。一個web應用簡單來說無非就是請求和相應了。獲取你真的該補補 協(xié)程 的相關(guān)知識了。不過。。不懂協(xié)程懂進程~ 那就 當成進程來看 一個請求一個進 (xie) 程.懂線程~ 那就 當成 線程來看 一個請求一個線 (xie) 程 分析 Requ...
摘要:前言因為本系列主要解讀源碼,所以環(huán)境采用作者自己搭建的適用系列的環(huán)境。 前言 因為本系列主要解讀zanphp源碼, 所以環(huán)境采用作者自己搭建的適用 zan 系列的 docker 環(huán)境。 https://github.com/cjeruen/zan-docker 環(huán)境相關(guān)說明 本系列基礎(chǔ)目錄都在 ~/zan-code 目錄下進行 如有變更 自行 切換目錄 安裝 docker 與 co...
摘要:中的容器容器介紹容器中獲取一個類的實例容器中注冊于獲取類的單例函數(shù)理解面向接口開發(fā)會幫助你更好的理解容器類容器幫助函數(shù)獲取類的實例注冊類的單例占位有待補充 PHP協(xié)程與yield 我說不如你查閱相關(guān)文檔與資料 Iterator(迭代器)接口 生成器總覽在PHP中使用協(xié)程實現(xiàn)多任務調(diào)度 當然 如果你暫時 懶的話 yield 當成 return 關(guān)鍵字就行 zanphp中的命名空間 Za...
摘要:前言當然從我們熟悉但不完全熟悉的說起。下面是中的具體邏輯了。這里采用的是的方式。 前言 當然從我們熟悉(但不完全熟悉)的 MVC 說起。簡(zhi)單(jie)的描述. 1. MVC 概覽 1.1. URL 規(guī)則 上篇 目錄說明中 提到的,這里不多說 規(guī)則就是這樣,后面來說其源碼 1.2. Controller && Action src/Index/IndexController.p...
閱讀 1532·2021-10-18 13:29
閱讀 2992·2021-10-12 10:18
閱讀 3649·2021-09-22 15:06
閱讀 2652·2019-08-29 17:09
閱讀 2865·2019-08-29 16:41
閱讀 1574·2019-08-29 13:48
閱讀 3288·2019-08-26 13:49
閱讀 3377·2019-08-26 13:34