關於 Ctx
這是一個方便你組織邏輯程式碼的框架,說是框架,但是不是 web 框架,也就是不會跟現有的使用中的框架衝突,可以直接引入使用
背景
很多時候我們在寫一個專案,如果把 admin,web 端,移動端 api 等放在同一個專案中,但是這樣的話部署就容易暴露所有的介面,如果分開到不同的專案那麼就會存在複製程式碼的情況。當然也可以採用微服務/rpc之類,但是這樣的話增加了網路開銷,http呼叫啥的。
Ctx 提供了一種新的方式,Ctx 單獨為一個專案倉庫,其他 api 或則指令碼按照不同的用途,單獨為不同的專案,但是他們都會共用 Ctx 這個專案。
Ctx 主要解決的是邏輯模組化,不同的模組是不同的服務,比如 user 模組,payment 模組等,不同的模組只負責自己的邏輯,模組之間呼叫,透過 ctx 進行統一的方式進行組織和呼叫,方便維護管理。同時 ctx 可以讓你很方便的實現 rpc 呼叫。
更多說明參看文件 https://github.com/jetea/ctx 不過 其實看原始碼比看文件更快 ,程式碼就幾百行,程式碼比文件內容要少,使用方式看tests,或 參考 部落格:開源專案:採用 Laravel 編寫的一個聊天應用 Laravel-Chat 在laravel中的使用,也更好理解。
Ctx 是一個模組化服務上下文框架,幫助模組化組織各種服務邏輯,讓服務間呼叫方式更加統一。
平時呼叫其他服務的方式一般是 new XyzService()
或則採用依賴注入
的方式例項化服務,前者會導致一個服務被例項化多次,服務提供方不能更好的進行控制,後者則會存在服務互相依賴的時候造成困擾,如果服務要單例的時候你還需要在服務提供者privider的地方宣告服務為單例。
Ctx 提供了一種新的選擇,每個模組都只會被例項化一次,每個模組的服務只會提供唯一的入口暴露給呼叫方,模組不支援多例項,這樣可以讓模組提供者可以更容易進行服務的控制和維護,所有的模組之間呼叫方式一致,如:
$this->ctx->模組名->方法()
安裝
composer require jetea/ctx=~1.0
本作品採用《CC 協議》,轉載必須註明作者和本文連結