首頁 >php框架 >Laravel >Laravel 7 擴展開發教程

Laravel 7 擴展開發教程

Guanhui
Guanhui轉載
2020-05-08 10:26:442643瀏覽

以下由Laravel入門教學專欄為大家介紹Laravel 7 擴充開發教學課程,希望對需要的朋友有幫助!

步驟 1. 建立一個新專案

我比較喜歡使用 Laravel 安裝程式。

laravel new lara-dg

我更喜歡使用 SQLite 進行測試和軟體包開發。修改你的.env 檔案:

DB_CONNECTION=sqlite
DB_DATABASE=/Users/ivan/code/packages/test-project/database/database.sqlite

接著讓我們來建立套件骨架。我們將使用 CLI tool. 它會產生所有必要的檔案:

composer require jeroen-g/laravel-packager

然後你可以執行產生命令。 Webkid 代表供應商名稱(你的命名空間), LaravelDiagnostic 代表你的專案名稱:

php artisan packager:new Webkid LaravelDiagnostic --i

然後輸入有關你和你的套件的資訊。現在看起來應該是這樣:

Laravel 7 擴展開發教程

控制台輸出

現在你的專案中有了packages 資料夾,其中有Webkid 目錄以及所有必要的文件。

該軟體包透過 composer 自動載入。我更喜歡使用相對路徑:

"repositories": {
    "webkid/laraveldiagnostic": {
        "type": "path",
        "url": "../../packages/lara-dg/packages/Webkid/LaravelDiagnostic"
    }
}

另外,如果你的 require 部分沒有自動更新,請手動更新一下。它將在你的 vendor 目錄中建立到軟體包目錄的符號連結。

"require": {
    "webkid/laraveldiagnostic": "*"
},

現在你可以在src 資料夾中建立類,但是它們應該具有適當的命名空間Webkid\LaravelDiagnostic.

例如,我有一個Commands 目錄,其中有一個RunDiagnostic.php類文件。所以它應該有這樣的命名空間:

namespace Webkid\LaravelDiagnostic\Commands;

如果要使用遷移、路由、設定檔、視圖甚至資源檔案(js,CSS,images),你需要在服務提供者中載入它們。你可以在 官方文件 中了解相關資訊。在這個範例中我只使用了命令。看看我的 LaravelDiagnosticServiceProvider 中的 bootForConsole() 方法:

public function bootForConsole()
{
    if ($this->app->runningInConsole()) {
        $this->commands([
            RunDiagnostic::class
        ]);
    }
}

我在第一次嘗試建構我的包時遇到了麻煩,因此,我想跟你分享我的個人心得。我更喜歡將所有 PHP 類別放入 src 資料夾中,並將所有其他檔案放在外面。例如:

assets— 用於存放所有CSS, js, images 檔案

#config — 用於存放所有設定檔

migrations — 用於存放所有遷移檔案

resources — 用於存放所有視圖檔案、lang 檔案等

src — 用於存放所有PHP 類,包括服務提供者

如果您需要引用其他軟體包,則必須編輯軟體包裡的composer.json 檔案來新增。

"require": {
    "cviebrock/eloquent-sluggable": "^4.3"
}

一個更有用的技巧:當你需要同時測試更改資源時,可以使用符號連結來避免始終重複 vendor 發布。它將創建符號鏈接,而不是複製文件。這個技巧為我節省了很多時間 

ln -s /path/to/your/project/webkid-cms/packages/webkid/cms/assets /path/to/your/project/webkid-cms/ public/vendor/cms

然後更新Composer 的自動載入以新增檔案:

composer dump-autoload

步驟2. 把你的專案放到GitHub 上

#當你的程式碼庫準備好後,可以到套件目錄下初始化一個Git 倉庫。

cd packages/Webkid/LaravelDiagnostic
git init
git add .
git commit -m "first commit"

建立一個新GitHub 倉庫並且新增origin.

git remote add origin git@github.com:yourusername/yourrepository.git
git push -u origin master
git tag -a 1.0.0 -m "release: First version"
git push --tags

步驟3. 把你的專案放到Packagist 上

#首先,在Packagist .org 網站註冊。我更喜歡使用我的 GitHub 帳戶進行註冊。

然後使用此 URL 提交新軟體包。輸入你的套件的 GitHub URL,然後點擊 Check. 如果發生任何錯誤,請按照螢幕上的指示進行操作。

完成上一步後,你將跳到你的套件的 packagist 頁面,在該頁面上你可能會收到如下通知:

此軟體包不會自動更新。請為 Packagist 設定 GitHub Service Hook 以便在你每次推送時更新它!

讓我們來設定一下。在此 頁面 上取得 API 令牌,然後造訪你的套件的 GitHub 頁面,找到 設定 / 網路鉤子和服務 / 新增服務 介面。搜尋 Packagist,輸入你的名字和令牌,然後點擊提交。在 Packagist 頁面上顯示的錯誤應該會在 5–10 分鐘內消失。

恭喜,你有一個有效的軟體包在線,現在你可以透過 composer 引用它了。

步驟5. 在packages 資料夾繼續進行操作

如果你開發這個軟體包的唯一目的是幫助你開發軟體包,那麼這個包的開發就完成了。

但是,如果你在一個更大的專案中開發了該軟體包,而現在又需要它,你可以將程式碼保留在 packages 資料夾中並使用它。

每當你完成工作時,可以從 composer.json 檔案中刪除此程式碼

"repositories": {
    "webkid/laraveldiagnostic": {
        "type": "path",
        "url": "../../packages/lara-dg/packages/Webkid/LaravelDiagnostic"
    }
}

然後從 packagist 拉取你的套件。

感謝你的閱讀。希望本文對大家有幫助。

讓我們為開源做出貢獻!

推薦教學:《Laravel

以上是Laravel 7 擴展開發教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除