這篇文章將為大家詳細(xì)講解有關(guān)Laravel7擴(kuò)展開(kāi)發(fā)的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)主營(yíng)壺關(guān)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā),壺關(guān)h5微信小程序搭建,壺關(guān)網(wǎng)站營(yíng)銷推廣歡迎壺關(guān)等地區(qū)企業(yè)咨詢步驟 1. 創(chuàng)建一個(gè)新項(xiàng)目
我更喜歡使用 Laravel 安裝程序。
laravel new lara-dg
我更喜歡使用 SQLite 進(jìn)行測(cè)試和軟件包開(kāi)發(fā)。修改你的.env 文件:
DB_CONNECTION=sqlite DB_DATABASE=/Users/ivan/code/packages/test-project/database/database.sqlite
接著讓我們來(lái)創(chuàng)建包骨架。我們將使用 CLI tool. 它會(huì)生成所有必需的文件:
composer require jeroen-g/laravel-packager
然后你可以運(yùn)行生成命令。Webkid 代表供應(yīng)商名稱(你的命名空間), LaravelDiagnostic 代表你的項(xiàng)目名稱:
php artisan packager:new Webkid LaravelDiagnostic --i
然后輸入有關(guān)你和你的包的信息?,F(xiàn)在看起來(lái)應(yīng)該是這樣:
控制臺(tái)輸出
現(xiàn)在你的項(xiàng)目中有了 packages 文件夾,其中有 Webkid 目錄以及所有必需的文件。
該軟件包通過(guò) composer 自動(dòng)加載。我更喜歡使用相對(duì)路徑:
"repositories": { "webkid/laraveldiagnostic": { "type": "path", "url": "../../packages/lara-dg/packages/Webkid/LaravelDiagnostic" } }
另外,如果你的 require 部分沒(méi)有自動(dòng)更新,請(qǐng)手動(dòng)更新一下。它將在你的 vendor 目錄中創(chuàng)建到軟件包目錄的符號(hào)鏈接。
"require": { "webkid/laraveldiagnostic": "*" },
現(xiàn)在你可以在 src 文件夾中創(chuàng)建類,但是它們應(yīng)當(dāng)具有適當(dāng)?shù)拿臻g Webkid\LaravelDiagnostic.
例如,我有一個(gè) Commands 目錄,其中有一個(gè) RunDiagnostic.php 類文件。所以它應(yīng)該有這樣的命名空間:
namespace Webkid\LaravelDiagnostic\Commands;
如果要使用遷移、路由、配置文件、視圖甚至資源文件(js,CSS,images),你需要在服務(wù)提供者中加載它們。你可以在 官方文檔 中了解相關(guān)信息。在這個(gè)示例中我只使用了命令??匆幌挛业?LaravelDiagnosticServiceProvider 中的 bootForConsole() 方法:
public function bootForConsole() { if ($this->app->runningInConsole()) { $this->commands([ RunDiagnostic::class ]); } }
我在第一次嘗試構(gòu)造我的包時(shí)遇到了麻煩,因此,我想跟你分享一下我的個(gè)人心得。我更喜歡將所有 PHP 類放入 src 文件夾中,并將所有其他文件放在外面。例如:
assets— 用于存放所有 CSS, js, images 文件
config — 用于存放所有配置文件
migrations — 用于存放所有遷移文件
resources — 用于存放所有視圖文件、lang 文件等
src — 用于存放所有 PHP 類,包括服務(wù)提供者
如果你需要引用其他軟件包,則必須編輯軟件包里的 composer.json 文件來(lái)添加。
"require": { "cviebrock/eloquent-sluggable": "^4.3" }
一個(gè)更有用的技巧:當(dāng)你需要同時(shí)測(cè)試更改資源時(shí),可以使用符號(hào)鏈接來(lái)避免始終重復(fù) vendor 發(fā)布。它將創(chuàng)建符號(hào)鏈接,而不是復(fù)制文件。這個(gè)技巧為我節(jié)省了很多時(shí)間
ln -s /path/to/your/project/webkid-cms/packages/webkid/cms/assets /path/to/your/project/webkid-cms/public/vendor/cms
然后更新 Composer 的自動(dòng)加載以添加新文件:
composer dump-autoload
步驟 2. 把你的項(xiàng)目放到 GitHub 上
當(dāng)你的代碼庫(kù)準(zhǔn)備就緒后,可以到包目錄下初始化一個(gè) Git 倉(cāng)庫(kù)。
cd packages/Webkid/LaravelDiagnostic git init git add . git commit -m "first commit"
創(chuàng)建一個(gè) 新 GitHub 倉(cāng)庫(kù) 并且添加 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. 把你的項(xiàng)目放到 Packagist 上
首先,在 Packagist.org 網(wǎng)站注冊(cè)。我更喜歡使用我的 GitHub 帳戶進(jìn)行注冊(cè)。
然后使用此 URL 提交新軟件包。輸入你的包的 GitHub URL,然后單擊 Check. 如果發(fā)生任何錯(cuò)誤,請(qǐng)按照屏幕上的說(shuō)明進(jìn)行操作。
完成上一步后,你將跳轉(zhuǎn)到你的包的 packagist 頁(yè)面,在該頁(yè)面上你可能會(huì)收到如下通知:
此軟件包不會(huì)自動(dòng)更新。請(qǐng)為 Packagist 設(shè)置 GitHub Service Hook 以便在你每次推送時(shí)更新它!
讓我們來(lái)設(shè)置一下。在此 頁(yè)面 上獲取 API 令牌,然后訪問(wèn)你的包的 GitHub 頁(yè)面,找到 設(shè)置 / 網(wǎng)絡(luò)鉤子和服務(wù) / 添加新服務(wù) 界面。搜索 Packagist,輸入你的名字和令牌,然后點(diǎn)擊提交。在 Packagist 頁(yè)面上顯示的錯(cuò)誤應(yīng)該會(huì)在 5–10 分鐘內(nèi)消失。
恭喜,你有一個(gè)有效的軟件包在線,現(xiàn)在你可以通過(guò) composer 引用它了。
步驟 5. 在 packages 文件夾繼續(xù)進(jìn)行操作
如果你開(kāi)發(fā)這個(gè)軟件包的目的是幫助你開(kāi)發(fā)軟件包,那么這個(gè)包的開(kāi)發(fā)就完成了。
但是,如果你在一個(gè)更大的項(xiàng)目中開(kāi)發(fā)了該軟件包,而現(xiàn)在又需要它,你可以將代碼保留在 packages 文件夾中并使用它。
每當(dāng)你完成工作時(shí),可以從 composer.json 文件中刪除此代碼
"repositories": { "webkid/laraveldiagnostic": { "type": "path", "url": "../../packages/lara-dg/packages/Webkid/LaravelDiagnostic" } }
然后從 packagist 拉取你的包。
關(guān)于“Laravel7擴(kuò)展開(kāi)發(fā)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。