摘要:介紹在中就有開發的相關介紹這其中需要運用當然對于我們開發人員來說開發一個擴展包還是很值得學習的現在就來開發一個消息通知的擴展包擴展包的地址整個參照的新建包在生成好的項目中新建目錄和同級接著在目錄下新建包目錄我們需要去項目下去聲明包的命名空間
介紹
在Laravel中就有Laravel Composer Package開發的相關介紹 這其中需要運用 Service Providers 當然對于我們Laravel開發人員
來說 開發一個擴展包還是很值得學習的 現在就來開發一個消息通知的擴展包
新建包擴展包的地址:https://github.com/GeekGhc/LaraFlash
整個package參照 Jeffrey Way的Flash Packages
在生成好的Laravel項目中新建packages目錄(和app同級) 接著在packages目錄下新建包目錄 packages/geekghc/laraflash
我們需要去laravel項目下去聲明包的命名空間:
"autoload": { "classmap": [ "database" ], "psr-4": { "App": "app/", "GeekGhcLaraFlash":"packages/geekghc/laraflash/src/" } },
聲明完畢之后別忘了去執行重新生成autoload文件
$ composer dump-autoload
我們需要新建src目錄來存放我們的源文件
接著因為我們是開發一個擴展包 之后還需要進行測試開發 所以我們去生成一個composer.json文件
$ composer init
填寫完基本信息之后 在packages/geekghc/laraflash目錄下就會生成一個composer.json文件:
我先給出
{ "name": "geekghc/flash", "description": "flash for laravel", "license": "MIT", "authors": [ { "name": "GeekGhc", "email": "ghcgavin@sina.com" } ], "minimum-stability": "dev", "require": { "php": ">=5.5.9", }, "require-dev": { "phpunit/phpunit": "~5.7", "mockery/mockery": "0.9.*" }, "autoload": { "psr-0": { "GeekGhcLaraFlash": "src/" }, "files": [ "src/GeekGhc/LaraFlash/function.php" ] } }
完成好composer.json后 我們可以去src/GeekGhc/LaraFlash目錄下新建一個Flash.php
我們這里繼承了Facade類,用Facades可以訪問IoC容器中注冊的類 這樣我們就可以去調用注冊的類
同時我們需要去新建一個Service Provider
$ php artisan make:provider FlashProvider將生成的 app/Providers/FlashProvider.php 文件移動到我們的 packages/geekghc/laraflash/src/GeekGhc/LaraFlash/ 目錄下面,并注冊 FlashProvider 到 config/app.php
在FlsahProvider里面我們去寫一下之后我們需要綁定的類:
public function register() { $this->app->bind( "GeekGhcLaraFlashSessionStore", "GeekGhcLaraFlashLaravelSessionStore" ); $this->app->singleton("laraflash",function(){ return $this->app->make("GeekGhcLaraFlashFlashNotifier"); }); }這邊我們就綁定了封裝好的SessionStore 之后我們去配置一下視圖的路徑
public function boot() { $this->loadViewsFrom(__DIR__."/../../views","laraflash"); $this->publishes([ __DIR__."/../../views"=>base_path("resources/views/vendor/laraFlash"), ]); }這里我們就發布了我們的視圖文件 如果在項目里去執行
$ php artisan vendor:publish我們就可以在resources/views/vendor/laraFlash去自定義自己需要的樣式效果
接著在config/app.php去注冊我們的服務
"providers" => [ GeekGhcLaraFlashMyFlashProvider::class, ];為了方便使用 可以再去添加一個alias
"aliases" => [ "LaraFlash"=>GeekGhcLaraFlashFlash::class, ];接著我們可以去實現flash的主要功能服務 每個包的功能都根據需求而來 這里也不多做介紹
最后的目錄結構是這樣的| |—— packages | |—— geekghc | |—— laraflash | |—— src 源文件 | |—— GeekGhc 源文件 | |—— LaraFlash | |—— Flash.php | |—— FlashNotifier.php | |—— function.php | |—— FlashProvider.php | |—— SessionStore.php | |—— LaravelSessionStore.php | |—— views 視圖文件 | |—— tests 測試目錄 | |—— vendor 測試需要的包 | |—— .gitignore | |—— composer.json | |—— composer.lock | |—— phpunit.xml | |—— readme.md這樣的話 我們就在本地寫好了擴展包 我們其實可以去創建一個控制器去測試我們這個包是否正常
在視圖home.blade.php我們就可以去包含views里面的視圖文件
@include("laraflash::notification")或者
@include("laraflash::header-notification")接著在控制器去使用類似這樣的形式:
LaraFlash::success("Message")
LaraFlash::info("Message")
LaraFlash::error("Message")
LaraFlash::warning("Message")
包的具體使用去GeekGhc/LaraFlash看一下具體使用就知道了
最后的效果大概就是這樣的:
顯示正常之后我們就可以去發布我們的package了
在github先創建一個倉庫 當然我這里的就是創建了LaraFlash這個遠程倉庫
緊接著我們去推好我們的代碼到github
接著我們需要去倉庫的setting => Intergrations&services添加Packagist服務(填寫好用戶名和Token)
添加完畢之后去Packagist Submit這個倉庫(提供遠程倉庫的地址)
在github進入packagist測試通過之后就ok了
因為我們之前定義的dev版本 如果后期有人提出了一些issues你去修改了自己的package
那么我們會去增加別的tag 也是就是說你修改package之后 再去添加一個tag:
$ git tag 2.0 -a填寫說明信息后 推送這個tag:
$ git push --tags這樣一來我們就發布了v2.0這個版本 這就是我們發布擴展包大概流程
參考資料博客文章地址Laravel Package
Laravel Composer Package 開發簡明教程
Laravel 的擴展插件開發指南
Laravel Package Development
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22719.html
摘要:流程一新項目流程創建,并添加依賴到的擴展包運行,安裝擴展包并生成提交到代碼版本控制器中,如流程二項目協作者安裝現有項目克隆項目后,根目錄下直接運行從中安裝指定版本的擴展包以及其依賴此流程適用于生產環境代碼的部署。 本文經授權轉自 PHPHub 社區 問題說明 我們經常要往現有的項目中添加擴展包,有時候因為文檔的錯誤引導,如下圖來自 這個文檔 的: showImg(https://dn-...
摘要:前言年底了不太忙,最近一段時間也一直在研究,就想寫篇關于比較深一點的教程系列啥的,于是就找到站長給開了寫教程的渠道。優點的就是為藝術家創造的框架,它也是工程化的趨勢。項目維護方便也是事實。如果有遇到問題可以直接在教程下面留言。 前言 年底了不太忙,最近一段時間也一直在研究laravel,就想寫篇關于laravel比較深一點的教程系列啥的,于是就找到站長給開了寫教程的渠道。由于第一次寫,...
摘要:更多擴展包中有豐富的擴展包來幫你完成幾乎任何你想實現的功能。我們不能把所有的擴展包都整理出來,然而,這里還是列出了一些很有用的。總之,你幾乎總是能夠找到一個擴展包可以解決你當前的問題。 Laravel 是一個非常流行且簡單易用的PHP框架,它提供了很多基礎的工具(如 RESTful 路由、內置的ORM、模版等)使你能夠快速的創建應用。這意味著你可以花費更少的時間來建立應用程序的模版,給...
使用場景 在引用第三方包的時候,對第三方包有改動需求,需要將代碼放在自己的倉庫;并且自己的其他項目也有需求引用自定義的第三方包;甚至自己會發布修改后的第三方包; 讀完本文你講獲得: Git Submodule的基本使用 從本地加載第三方包 從自定義倉庫地址獲取擴展包 快速創建第三方包 本文是在我自己想要創建一個基礎第三方包的時候記錄下的操作步驟 1、利用git submoudle在已有項目中使...
摘要:現在已經有了很多,關于如何開發擴展包的文章。提交代碼到首先,需要把擴展包的代碼提交到上,記錄下版本庫的地址,注意是。填寫完畢,提交后,記得測試一次,完成首次同步,成功會提示信息。 現在已經有了很多,關于如何開發 Laravel 擴展包的文章。但是大多文章寫的太過片面,不夠完整,而且我在實際進行開發擴展包的時候,還是遇到了很多的問題,我把自己的開發經驗,以及遇到的問題記錄下來,分享給大家...
閱讀 1356·2021-11-15 11:45
閱讀 3123·2021-09-27 13:36
閱讀 2867·2019-08-30 15:54
閱讀 984·2019-08-29 12:38
閱讀 2905·2019-08-29 11:22
閱讀 2983·2019-08-26 13:52
閱讀 2026·2019-08-26 13:30
閱讀 584·2019-08-26 10:37