用模式實(shí)戰(zhàn):ThinkPHP6 多應(yīng)用架構(gòu)的配置與運(yùn)用)
EasyAdmin 多應(yīng)用模式實(shí)戰(zhàn)ThinkPHP6 多應(yīng)用架構(gòu)的配置與運(yùn)用【免費(fèi)下載鏈接】easyadmin框架主要使用ThinkPHP6.0 layui擁有完善的權(quán)限的管理模塊以及敏捷的開(kāi)發(fā)方式讓你開(kāi)發(fā)起來(lái)更加的舒服。項(xiàng)目地址: https://gitcode.com/gh_mirrors/easy/easyadminEasyAdmin 是一套基于ThinkPHP6 layui開(kāi)發(fā)的敏捷后臺(tái)框架內(nèi)置了完善的后臺(tái)管理模塊。很多初學(xué)者在拿到項(xiàng)目后會(huì)好奇為什么后臺(tái)代碼都放在app/admin目錄下這其實(shí)正是 ThinkPHP6 的多應(yīng)用模式在發(fā)揮作用。本文將從目錄結(jié)構(gòu)、核心配置到實(shí)戰(zhàn)開(kāi)發(fā)帶你一步步掌握 EasyAdmin 多應(yīng)用模式的配置與運(yùn)用學(xué)會(huì)如何搭建屬于自己的多應(yīng)用架構(gòu)。一、EasyAdmin 多應(yīng)用模式的目錄結(jié)構(gòu)長(zhǎng)什么樣ThinkPHP6 的多應(yīng)用模式把不同業(yè)務(wù)模塊拆分成獨(dú)立的應(yīng)用每個(gè)應(yīng)用擁有自己的控制器、模型、視圖與配置互不干擾。EasyAdmin 默認(rèn)就采用這一架構(gòu)app/admin/后臺(tái)管理應(yīng)用包含 controller、model、view 與 middleware 等子目錄app/common/公共模塊存放跨應(yīng)用復(fù)用的代碼如 AdminController.php、AuthService.php 等app/index/未在示例中列出前臺(tái)默認(rèn)應(yīng)用也是訪問(wèn)入口指向的默認(rèn)應(yīng)用。這種一應(yīng)用一目錄的劃分讓 EasyAdmin 的后臺(tái)、前臺(tái)甚至 API 接口都可以彼此獨(dú)立開(kāi)發(fā)與維護(hù)是ThinkPHP6 多應(yīng)用架構(gòu)最直觀的體現(xiàn)。二、快速上手核心配置文件都藏在哪里EasyAdmin 的多應(yīng)用模式主要依賴三個(gè)配置文件理解了它們就等于掌握了多應(yīng)用的開(kāi)關(guān)。1. 全局應(yīng)用配置在 config/app.php 中可以看到多應(yīng)用的關(guān)鍵參數(shù)default_app默認(rèn)應(yīng)用名EasyAdmin 設(shè)置為index訪問(wèn)根域名時(shí)默認(rèn)進(jìn)入前臺(tái)app_map應(yīng)用映射這里將admin映射到后臺(tái)應(yīng)用domain_bind域名綁定可讓不同域名直接訪問(wèn)不同應(yīng)用deny_app_list禁止訪問(wèn)的應(yīng)用列表common公共模塊被屏蔽避免被直接 URL 訪問(wèn)。2. 應(yīng)用級(jí)配置每個(gè)應(yīng)用目錄下還有自己的配置目錄例如 app/admin/config/app.php 與 app/admin/config/route.php可針對(duì)單個(gè)應(yīng)用做獨(dú)立的路由中間件、模板等設(shè)置互不影響。3. 路由與訪問(wèn)規(guī)則config/route.php 負(fù)責(zé)全局路由規(guī)則配合 route/app.php 可進(jìn)一步定義 URL 偽靜態(tài)與控制器映射。多應(yīng)用模式下訪問(wèn)地址形如域名/admin/控制器/方法其中admin就是應(yīng)用名。三、最常見(jiàn)的實(shí)戰(zhàn)需求如何修改后臺(tái)訪問(wèn)地址很多生產(chǎn)環(huán)境不希望后臺(tái)地址使用默認(rèn)的adminEasyAdmin 通過(guò)環(huán)境變量即可一鍵完成后臺(tái)入口自定義。打開(kāi)項(xiàng)目的.env文件找到如下配置[easyadmin] admin admin將其改為你想要的別名例如manage然后訪問(wèn)域名/manage即可進(jìn)入后臺(tái)。這一機(jī)制來(lái)源于 config/app.php 中的admin_alias_name與app_map配置通過(guò)Env::get(easyadmin.admin, admin)動(dòng)態(tài)讀取真正做到改一行換入口有效提升后臺(tái)安全性。四、公共模塊與公共控制器多應(yīng)用的共享底座多應(yīng)用模式下公共代碼的復(fù)用是關(guān)鍵。EasyAdmin 將后臺(tái)通用的邏輯抽到了app/common中AdminController.php后臺(tái)基礎(chǔ)控制器封裝了權(quán)限校驗(yàn)、模板布局、參數(shù)構(gòu)建、跳轉(zhuǎn)提示等能力后臺(tái)所有控制器繼承它即可AuthService.php登錄認(rèn)證與節(jié)點(diǎn)權(quán)限服務(wù)JumpTrait.php成功/失敗跳轉(zhuǎn)的通用 Trait。以 AdminController.php 為例它的initialize()方法會(huì)自動(dòng)完成視圖初始化與checkAuth()權(quán)限檢測(cè)開(kāi)發(fā)者只需要在業(yè)務(wù)控制器里寫(xiě)具體邏輯比如 app/admin/controller/Index.php 中一個(gè)welcome()方法即可渲染歡迎頁(yè)開(kāi)發(fā)效率大幅提升。五、中間件在各應(yīng)用中的獨(dú)立配置多應(yīng)用模式下每個(gè)應(yīng)用都可以擁有獨(dú)立的中間件棧。全局中間件定義在 app/middleware.php而后臺(tái)應(yīng)用的中間件則定義在 app/admin/middleware.php。EasyAdmin 的后臺(tái)應(yīng)用默認(rèn)加載了SystemLog系統(tǒng)操作日志記錄CsrfMiddlewareCSRF 安全校驗(yàn)SessionInitSession 初始化。這些中間件分別實(shí)現(xiàn)在 app/admin/middleware/ 目錄下例如 SystemLog.php。當(dāng)你開(kāi)發(fā)新應(yīng)用時(shí)只需在對(duì)應(yīng)應(yīng)用的middleware.php中按需注冊(cè)中間件即可實(shí)現(xiàn)安全策略的按應(yīng)用隔離。六、動(dòng)手實(shí)踐為 EasyAdmin 新增一個(gè)多應(yīng)用模塊掌握了原理后你可以按以下 4 步快速新建一個(gè)應(yīng)用在app/下新建目錄如api/并創(chuàng)建controller/、model/、view/子目錄在api/controller/中編寫(xiě)控制器繼承BaseController或按需繼承公共控制器配置該應(yīng)用的middleware.php與config/中的獨(dú)立參數(shù)在 config/app.php 中按需添加app_map映射或domain_bind域名綁定。例如想讓api應(yīng)用支持接口簽名校驗(yàn)只需在app/api/middleware.php中注冊(cè)自定義中間件完全不影響后臺(tái)應(yīng)用的運(yùn)行邏輯這正是ThinkPHP6 多應(yīng)用架構(gòu)的魅力所在。七、總結(jié)通過(guò)以上實(shí)戰(zhàn)可以看出EasyAdmin 基于ThinkPHP6 多應(yīng)用模式搭建的目錄與配置體系讓前后臺(tái)分離、接口獨(dú)立成為可能。無(wú)論是修改后臺(tái)入口、復(fù)用公共控制器還是按應(yīng)用隔離中間件都清晰而靈活。如果你正準(zhǔn)備基于 ThinkPHP6 開(kāi)發(fā)中大型項(xiàng)目不妨直接使用 EasyAdmin 作為起點(diǎn)將更多精力投入到業(yè)務(wù)本身。希望這篇 EasyAdmin 多應(yīng)用模式實(shí)戰(zhàn)指南能幫你快速上手并真正用好 ThinkPHP6 多應(yīng)用架構(gòu)【免費(fèi)下載鏈接】easyadmin框架主要使用ThinkPHP6.0 layui擁有完善的權(quán)限的管理模塊以及敏捷的開(kāi)發(fā)方式讓你開(kāi)發(fā)起來(lái)更加的舒服。項(xiàng)目地址: https://gitcode.com/gh_mirrors/easy/easyadmin創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考