把Laravel和Lumen聯合起來作為一個專案

lyxxxh 發表於 2021-03-19
Laravel

前言

後臺 用: Dcat Admin
api 用: 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,利用 composerpsr-4 來替換路徑。

(nameauthors 自行修改)

{
    "name": "administrator/job_serve",
    "authors": [
        {
            "name": "xxh",
            "email": "[email protected]"
        }
    ],
    "autoload": {
        "psr-4": {
            "Model\\": "Model"
        }
    },
    "description": "larvel&lumen common composer.json"
}

合併主目錄的composer.json

需要安裝composer-merge-plugin

admin_laravelapi_lumen 都執行:
composer require wikimedia/composer-merge-plugin


新增配置到admin_laravel api_lumencomposer.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和lumen聯合起來作為一個專案

把laravel和lumen聯合起來作為一個專案

(laravel 也是一樣的測試 不演示了。)

刪除不必要的檔案。

這一步 必須 做,因為他嚴重影響使用者的理解。

  1. 兩個專案的 app\Models 資料夾
  2. 兩個專案的 .env 檔案
  3. lumendatabase 資料夾,用 laravel的就行了。(不刪也可以 影響不大)

後續的問題

使用者 需要對框架有一定理解才行。

把laravel和lumen聯合起來作為一個專案

比如這個 Illuminate\Database\Eloquent\Model 使用的時候,訪問是那個檔案?
使用者 總得需要知道。

對於相容:
laravellumen 儘量選擇相同版本的,他們兩個擴充套件包很多都是差不多的。

比如laravellumensession 共享是沒問題的。


其他:
我想盡量小的改造,改造會增加其他人學習成本,見過一個 laravel 專案,
亂改造 Laravel,找 model provider 都不知道在哪裡。

apiato 這種大改造還好,因為有文件,而且專業。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
專心學習不瞎搞

相關文章