前言
後臺
用: Dcat Adminapi
用: lumen
那麼需要分兩個專案才行了, 為什麼不直接用 laravel?
心理在作怪。
專案目錄結構
+---admin_laravel // 後臺 laravel
+---api_lumen // api lumen
+---.env // 共用的.env
+---Model // 共用模型
+---composer.json // 共用composer.json (共用模型實現)
+---README.md
改配置
改.env路徑
都是改 bootstrap/app.php
。
Laravel
:
$app->loadEnvironmentFrom(
DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'.env'
);
Lumen
:
(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
dirname(dirname(__DIR__))
))->bootstrap();
這樣都是載入相同的 .env
了。
改共用模型
改主目錄的composer.json
思路:
合併主目錄的 composer.json
,利用 composer
的 psr-4
來替換路徑。
(name
和 authors
自行修改)
{
"name": "administrator/job_serve",
"authors": [
{
"name": "xxh",
"email": "449399575@qq.com"
}
],
"autoload": {
"psr-4": {
"Model\\": "Model"
}
},
"description": "larvel&lumen common composer.json"
}
合併主目錄的composer.json
在admin_laravel
和 api_lumen
都執行:composer require wikimedia/composer-merge-plugin
新增配置到admin_laravel
api_lumen
的 composer.json
"extra": {
"merge-plugin": {
"require": [
"../composer.json"
],
"recurse": true,
"replace": false,
"ignore-duplicates": false,
"merge-dev": true,
"merge-extra": false,
"merge-extra-deep": false,
"merge-scripts": false
}
}
兩個專案都執行composer dump-autoload
合併主目錄的 composer.json
。
測試模型
api_lumen/routes/web.php
:
(laravel
也是一樣的測試 不演示了。)
刪除不必要的檔案。
這一步 必須
做,因為他嚴重影響使用者的理解。
- 兩個專案的
app\Models
資料夾 - 兩個專案的
.env
檔案 lumen
的database
資料夾,用laravel
的就行了。(不刪也可以 影響不大)
後續的問題
使用者
需要對框架有一定理解才行。
比如這個 Illuminate\Database\Eloquent\Model
使用的時候,訪問是那個檔案?使用者
總得需要知道。
對於相容:laravel
和 lumen
儘量選擇相同版本的,他們兩個擴充套件包很多都是差不多的。
比如laravel
和 lumen
的 session
共享是沒問題的。
其他:
我想盡量小的改造,改造會增加其他人學習成本,見過一個 laravel
專案,
亂改造 Laravel
,找 model
provider
都不知道在哪裡。
像apiato 這種大改造還好,因為有文件,而且專業。
本作品採用《CC 協議》,轉載必須註明作者和本文連結