如何使用 Composer 構建 Laravel 包?

yanding 2023-06-15 409

介紹

Laravel 包是一組可重用的類,可以改進 Laravel 網站的功能。換句話說,一個包就是 WordPress 插件。Laravel 包旨在通過將可重用功能封裝在一組可在任何 Laravel 項目中使用的獨立類中來減少開發(fā)時間。

在本教程中:如何使用 Composer 構建 Laravel 包,我們將為聯(lián)系表單構建一個 Laravel 包。我們開始這個派對吧。

使用 Composer 構建 Laravel 包的先決條件

以下是使用 Composer 構建 Laravel 包的先決條件

  • 需要 Laravel v 5.5 或更高版本。

  • Composer 安裝在您的系統(tǒng)上。如果您還沒有Composer,可以在此處獲取它。

基本設置和安裝

因為包旨在為 Laravel 網站提供更多功能,所以第一步是構建 Laravel 網站。我們將使用 Composer 來設置它。查看官方Laravel 文檔以獲取更多安裝選項。

如何使用 Composer 構建 Laravel 包?
$ composer create-project —prefer-dist laravel/laravel packagetestapp

完成后,您需要配置您的 env 文件并指定您的應用程序密鑰和其他相關數(shù)據(jù)。在終端中使用以下命令或手動將 .env.example 的內容傳輸?shù)叫挛募⑵淞泶鏋?.env。

如何使用 Composer 構建 Laravel 包?
$ cp .env.example .env

完成后,使用以下命令。

如何使用 Composer 構建 Laravel 包?
$ php artisan 鍵:生成

生成應用程序密鑰并配置數(shù)據(jù)庫詳細信息后,您的 .env 應該如下所示。

如何使用 Composer 構建 Laravel 包?

我們的基本 Laravel 應用程序現(xiàn)已設置。是時候開始處理我們的包了。

使用 Bacancy 開發(fā)高性能 Laravel 應用程序!
聘請 Laravel 開發(fā)人員,與我們一起見證您夢想產品的構建。我們擁有具有非凡問題技能的敬業(yè)開發(fā)人員。今天聯(lián)系我們!

項目結構

我們將設置我們包的基本要素?;旧嫌袃煞N方法可以實現(xiàn)這一點:

  • 手動生成單個文件和文件夾

  • 使用諸如此 CLI 實用程序之類的軟件包。

在這里,我們將手動生成文件和目錄以了解每個組件如何組合在一起。

這是我們包的文件夾結構。

從您的根目錄創(chuàng)建具有以下結構的文件夾。

如何使用 Composer 構建 Laravel 包?
$包/你的供應商/你的包/

因為更新 vendor 文件夾中的代碼不是一個好習慣,所以我們將在 packages /YourVendor/YourPackage/目錄而不是vendor/YourVendor/YourPackage/目錄之外執(zhí)行我們的所有工作。

當我們完成發(fā)布我們的包時,它將可以在 vendor 文件夾下下載。

YourVendor 是供應商的名稱,可能是您的姓名或您為其生成程序包的客戶或企業(yè)的名稱。

包名稱由 YourPackage 表示。在我們的例子中它將是聯(lián)系表。

讓我們開始創(chuàng)建將構成我們的包的文件和文件夾。

如何使用 Composer 構建 Laravel 包?
你的供應商
  └── 聯(lián)系方式
      └── 來源
          ├── 數(shù)據(jù)庫
          │ └── 遷移
          ├── HTTP
          │ └── 控制器
          ├── 車型
          ├── 資源
          │ └── 瀏覽次數(shù)
          └──路線

創(chuàng)建作曲家文件

我們現(xiàn)在將初始化 Composer。使用以下命令生成 composer.json。

如何使用 Composer 構建 Laravel 包?
$作曲家初始化

因為它是交互式的,它會問你一系列問題來填寫你的composer.json文件。如果您不確定,請單擊回車以使用默認響應;如果您不確定,您可以稍后直接從 composer.json 文件更新它。

composer.json 文件現(xiàn)在應該如下所示。

如何使用 Composer 構建 Laravel 包?
{
  “名稱”:“您的供應商/聯(lián)系表”,
   "description": "laravel 的聯(lián)系表單包",
   “作者”:[{
      "name": "烏薩瑪帕特爾",
      “電子郵件”:“ john.doe@email.com ”
 }],
   “要求”: {}}

我們需要通知 composer.json 自動加載我們的文件,因此將此代碼添加到您的 composer.json。

如何使用 Composer 構建 Laravel 包?
“自動加載”:{
   “psr-4”:{
    "YourVendor\\contactform\\": "src/"
   }
}

我們的 composer.json 文件現(xiàn)在應該看起來像這樣。

如何使用 Composer 構建 Laravel 包?
{
   “名稱”:“您的供應商/聯(lián)系表”,
   "description": "laravel 的聯(lián)系表單包",
   “作者”:[{
      "name": "烏薩瑪帕特爾",
       “電子郵件”:“ john.doe@email.com ”
    }],
   “要求”: {},
   “自動加載”:{
   “psr-4”:{
        "YourVendor\\Contactform\\": "src/"
     }
   }
 }

創(chuàng)建一個空的 git 存儲庫以跟蹤之后的修改(我們稍后將添加遠程存儲庫)。使用以下命令。

如何使用 Composer 構建 Laravel 包?
$ 初始化

繼續(xù)你的研究:

Laravel 性能優(yōu)化

創(chuàng)建服務提供者

讓我們從向包中添加一些文件開始。首先,我們必須為我們的包裹確定一個服務提供商。Laravel 使用一個服務提供者來確定哪些文件將被你的包加載和訪問。

在您的 src/子目錄中創(chuàng)建一個ContactFormServiceProvider.php文件

如何使用 Composer 構建 Laravel 包?
$ src/ContactFormServiceProvider.php

我們需要在我們的服務提供商中定義一些項目:
1. 命名空間(我們在 composer.json 自動加載中定義的)。
2.擴展(我們的服務提供者擴展的Laravel類)
3.每個服務提供者必須有的兩個強制方法(每個Laravel包服務提供者至少需要兩個方法:boot()和register())。

將以下代碼行添加到您的服務提供者類中。

注意:您可以在下面的代碼中將 YourVendor 替換為您自己的供應商名稱。

// ContactFormServiceProvider.php

如何使用 Composer 構建 Laravel 包?
<?php
 
   命名空間 YourVendor\contactform;
   使用 Illuminate\Support\ServiceProvider;
   類 ContactFormServiceProvider 擴展 ServiceProvider {
       公共功能引導()
       {
       }
       公共功能寄存器()
       {
     }
  }?>

我們需要通知 Laravel 如何加載我們的包并利用它的功能,因為我們還沒有部署它并且它還不在我們的 vendor 文件夾中,所以在 composer 中的 Laravel 項目的根目錄中。將以下代碼添加到您的 JSON。

如何使用 Composer 構建 Laravel 包?
“自動加載”:{
   “類圖”:[
    “數(shù)據(jù)庫/種子”,
    “數(shù)據(jù)庫/工廠”
   ],
     “psr-4”:{
         "YourVendor\\Contactform\\": "packages/YourVendor/contactform/src",
         “應用程序\\”:“應用程序/”
        }
     },
      “自動加載開發(fā)”:{
          “psr-4”:{
             "YourVendor\\Contactform\\": "packages/YourVendor/contactform/src",
             “測試\\”:“測試/”
           }
       },

根據(jù)你的 Laravel 版本,Laravel 可能會自動為你添加它。如果是這樣,請務必跳過它。

然后,在您的終端上,在應用程序的根目錄下運行以下命令。

如何使用 Composer 構建 Laravel 包?
$作曲家轉儲自動加載

讓我們檢查一下我們的包現(xiàn)在是否正確加載。讓我們創(chuàng)建一個路由并將其加載到ContactFormServiceProvider.php文件的啟動方法中

// ContactFormServiceProvider.php

如何使用 Composer 構建 Laravel 包?
$this->loadRoutesFrom(__DIR__.'/routes/web.php');

請注意以下事項:

  • 文件所在的當前目錄稱為 __DIR__。

  • 我們將為我們的包構建的路由文件夾,將存在于我們的 src 文件夾中,而不是默認的 Laravel 路由,在 routes/web.php 中被引用。

將以下代碼添加到我們的 package routes 文件夾中的 web.php 文件中。

如何使用 Composer 構建 Laravel 包?
<?php
   // YourVendor\contactform\src\routes\web.php
   Route::get('聯(lián)系人', function(){
       return 'Hello from the contact form package';
   });?>

然后,在我們的根config/app.php中,我們需要將新的服務提供者添加到提供者數(shù)組中,如下所示。

// 配置/app.php

如何使用 Composer 構建 Laravel 包?
'供應商'=> [
    ...,
    App\Providers\RouteServiceProvider::類,
    // 我們的新包類
    YourVendor\Contactform\ContactFormServiceProvider::類,
],

運行應用

現(xiàn)在使用命令啟動 Laravel 應用程序。

如何使用 Composer 構建 Laravel 包?
php 工匠服務

在瀏覽器中轉到 localhost:8000/contact,您應該會看到如下內容:

如何使用 Composer 構建 Laravel 包?

你可能想知道

要安裝的頂級 Laravel 軟件包

Github 存儲庫:Laravel 包示例

現(xiàn)在我們知道我們的包裹正在正確加載我們需要創(chuàng)建我們的聯(lián)系表格。您可以在此Github 存儲庫中找到其余代碼

結論

這是一個基本教程,介紹如何使用 Composer 構建 Laravel 包。有了新的理解,您可以創(chuàng)建更多令人驚嘆的包。

言鼎科技

The End