折騰了很久了也經(jīng)歷了很多線上和開發(fā)上遇到的各種坑,下面來說說需要特別注意的地方,歡迎大家留言補充。 Composer包的引入 問題:很多包并不適用,我就在生產(chǎn)的時候遇到過這樣一個問題 $this->app->setRuntimePath($this->app->getRuntimePath() . $appName . DIRECTORY_SEPARATOR); 看出問題在哪里了嗎? ...
繼今天發(fā)布通過固定注解來包裝的切面后,發(fā)現(xiàn)在實際業(yè)務(wù)中局限性還是很大,于是又繼續(xù)完善了下。采用接口的形式進行定義處理。而不是固定的通過包裝的形式。 你可以把這個想成“針對某個方法的”中間件調(diào)用鏈 實現(xiàn)接口 <?php declare(strict_types=1); namespace app\admin\attribute; use panda\container\Contract\AopHand...
aop 可以實現(xiàn)不修改原有邏輯的情況下,對功能的擴展。是非常實用的功能。只要經(jīng)過容器的調(diào)用都支持切面 無需配置 輸出演示 示例 class Test { // get請求 #[GET] // 請求映射 #[Rule('/demo')] // 方法進入前調(diào)用 調(diào)用參數(shù)為callable 支持參數(shù)傳入 #[BeforeEntering([Test::class, 'b...
[RequestCompletion] 的執(zhí)行時機是 每個請求的最后階段。此時前端內(nèi)容早已響應(yīng)完畢 本例中 是用來記錄后臺的操作日志 /** * @Date: 2023/3/18 * @Author: WasonCheung * 操作日志記錄 */ class AdminOperationLogger { /** * @var AdminLogEntity[] */ pub...
debug是開發(fā)中 必不可少的一環(huán) pandaman內(nèi)置了debugbar,使用注解可以快速方便的在任何位置注冊你的debug信息 // 注冊debug信息收集器 #[AsDebugDataCollector] class ConfigDataCollector extends RequestDataCollector { public function getName() { ret...
在pandaman中擴展了中間件的功能 > 框架不設(shè)內(nèi)置加載,全部按需加載,路徑位置。全靠自定義 > 使用方法 類似springboot的攔截器,可以根據(jù)地址進行攔截操作。這種方式 // 注冊一個啟動器 #[AsBoot] class AdminMiddlewareRegister { // 中間件注冊注入 public function boot(MiddlewareRegistry $re...
使用屬性類定義路由的好處 最明顯的好處就是,開發(fā)過程中,在需求,路徑,路由 等等反復修改時造成的多余的工作量。 對于控制器的寫死方式,并不靈活,比如 我想把登錄的路由 放到用戶的路由組下,這種情況下容器一改全改。 而使用注解的方式定義,隨便你放到那里都行,不僅可以根據(jù)自己的喜好開發(fā),還不受其它的影響。 在pandaman中,輕松一鍵獲取所有的路由,這在做權(quán)限判斷的時候更簡單 class Login { #[G...
#[AsTimer(3, '測試')] public function timersss(): void { // 業(yè)務(wù)邏輯 支持依賴注入 } ...
[RequestCompletion] 請求完成調(diào)度執(zhí)行 當你想在每次請求完成的最后階段做一些事,比如 清理日志,保存緩存,刷新統(tǒng)計等等。都能用到 使用方法 只需要把屬性類方法需要執(zhí)行的任何方法內(nèi),同樣的也支持依賴注入 class TestE { #[RequestCompletion] public function handle(): void { Log::cle...
為什么有了Thinkphp和Webman還要如此蛋疼的搞個Pandaman出來? 在深度折騰過兩者后,基于自己的使用痛點,改善而來。 傳統(tǒng)的PHP框架笨重,workerman已經(jīng)很好的解決了 容器管理 現(xiàn)代開發(fā)中已經(jīng)必不可少了?;谌萜髯鲩_發(fā),后期可以對各種實現(xiàn)的無縫切換。 同時對于類也可以很好的解耦 在使用workerman后 遇到的最多的問題,就是隱藏的bug,這并不是worker的問題。很多composer包...