摘要:介紹在中就有開發(fā)的相關(guān)介紹這其中需要運(yùn)用當(dāng)然對于我們開發(fā)人員來說開發(fā)一個(gè)擴(kuò)展包還是很值得學(xué)習(xí)的現(xiàn)在就來開發(fā)一個(gè)消息通知的擴(kuò)展包擴(kuò)展包的地址整個(gè)參照的新建包在生成好的項(xiàng)目中新建目錄和同級(jí)接著在目錄下新建包目錄我們需要去項(xiàng)目下去聲明包的命名空間
介紹
在Laravel中就有Laravel Composer Package開發(fā)的相關(guān)介紹 這其中需要運(yùn)用 Service Providers 當(dāng)然對于我們Laravel開發(fā)人員
來說 開發(fā)一個(gè)擴(kuò)展包還是很值得學(xué)習(xí)的 現(xiàn)在就來開發(fā)一個(gè)消息通知的擴(kuò)展包
新建包擴(kuò)展包的地址:https://github.com/GeekGhc/LaraFlash
整個(gè)package參照 Jeffrey Way的Flash Packages
在生成好的Laravel項(xiàng)目中新建packages目錄(和app同級(jí)) 接著在packages目錄下新建包目錄 packages/geekghc/laraflash
我們需要去laravel項(xiàng)目下去聲明包的命名空間:
"autoload": { "classmap": [ "database" ], "psr-4": { "App": "app/", "GeekGhcLaraFlash":"packages/geekghc/laraflash/src/" } },
聲明完畢之后別忘了去執(zhí)行重新生成autoload文件
$ composer dump-autoload
我們需要新建src目錄來存放我們的源文件
接著因?yàn)槲覀兪情_發(fā)一個(gè)擴(kuò)展包 之后還需要進(jìn)行測試開發(fā) 所以我們?nèi)ド梢粋€(gè)composer.json文件
$ composer init
填寫完基本信息之后 在packages/geekghc/laraflash目錄下就會(huì)生成一個(gè)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目錄下新建一個(gè)Flash.php
我們這里繼承了Facade類,用Facades可以訪問IoC容器中注冊的類 這樣我們就可以去調(diào)用注冊的類
同時(shí)我們需要去新建一個(gè)Service Provider
$ php artisan make:provider FlashProvider將生成的 app/Providers/FlashProvider.php 文件移動(dòng)到我們的 packages/geekghc/laraflash/src/GeekGhc/LaraFlash/ 目錄下面,并注冊 FlashProvider 到 config/app.php
在FlsahProvider里面我們?nèi)懸幌轮笪覀冃枰壎ǖ念?
public function register() { $this->app->bind( "GeekGhcLaraFlashSessionStore", "GeekGhcLaraFlashLaravelSessionStore" ); $this->app->singleton("laraflash",function(){ return $this->app->make("GeekGhcLaraFlashFlashNotifier"); }); }這邊我們就綁定了封裝好的SessionStore 之后我們?nèi)ヅ渲靡幌乱晥D的路徑
public function boot() { $this->loadViewsFrom(__DIR__."/../../views","laraflash"); $this->publishes([ __DIR__."/../../views"=>base_path("resources/views/vendor/laraFlash"), ]); }這里我們就發(fā)布了我們的視圖文件 如果在項(xiàng)目里去執(zhí)行
$ php artisan vendor:publish我們就可以在resources/views/vendor/laraFlash去自定義自己需要的樣式效果
接著在config/app.php去注冊我們的服務(wù)
"providers" => [ GeekGhcLaraFlashMyFlashProvider::class, ];為了方便使用 可以再去添加一個(gè)alias
"aliases" => [ "LaraFlash"=>GeekGhcLaraFlashFlash::class, ];接著我們可以去實(shí)現(xiàn)flash的主要功能服務(wù) 每個(gè)包的功能都根據(jù)需求而來 這里也不多做介紹
最后的目錄結(jié)構(gòu)是這樣的| |—— 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這樣的話 我們就在本地寫好了擴(kuò)展包 我們其實(shí)可以去創(chuàng)建一個(gè)控制器去測試我們這個(gè)包是否正常
在視圖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看一下具體使用就知道了
最后的效果大概就是這樣的:
顯示正常之后我們就可以去發(fā)布我們的package了
在github先創(chuàng)建一個(gè)倉庫 當(dāng)然我這里的就是創(chuàng)建了LaraFlash這個(gè)遠(yuǎn)程倉庫
緊接著我們?nèi)ネ坪梦覀兊拇a到github
接著我們需要去倉庫的setting => Intergrations&services添加Packagist服務(wù)(填寫好用戶名和Token)
添加完畢之后去Packagist Submit這個(gè)倉庫(提供遠(yuǎn)程倉庫的地址)
在github進(jìn)入packagist測試通過之后就ok了
因?yàn)槲覀冎岸x的dev版本 如果后期有人提出了一些issues你去修改了自己的package
那么我們會(huì)去增加別的tag 也是就是說你修改package之后 再去添加一個(gè)tag:
$ git tag 2.0 -a填寫說明信息后 推送這個(gè)tag:
$ git push --tags這樣一來我們就發(fā)布了v2.0這個(gè)版本 這就是我們發(fā)布擴(kuò)展包大概流程
參考資料博客文章地址Laravel Package
Laravel Composer Package 開發(fā)簡明教程
Laravel 的擴(kuò)展插件開發(fā)指南
Laravel Package Development
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22719.html
摘要:流程一新項(xiàng)目流程創(chuàng)建,并添加依賴到的擴(kuò)展包運(yùn)行,安裝擴(kuò)展包并生成提交到代碼版本控制器中,如流程二項(xiàng)目協(xié)作者安裝現(xiàn)有項(xiàng)目克隆項(xiàng)目后,根目錄下直接運(yùn)行從中安裝指定版本的擴(kuò)展包以及其依賴此流程適用于生產(chǎn)環(huán)境代碼的部署。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 問題說明 我們經(jīng)常要往現(xiàn)有的項(xiàng)目中添加擴(kuò)展包,有時(shí)候因?yàn)槲臋n的錯(cuò)誤引導(dǎo),如下圖來自 這個(gè)文檔 的: showImg(https://dn-...
摘要:前言年底了不太忙,最近一段時(shí)間也一直在研究,就想寫篇關(guān)于比較深一點(diǎn)的教程系列啥的,于是就找到站長給開了寫教程的渠道。優(yōu)點(diǎn)的就是為藝術(shù)家創(chuàng)造的框架,它也是工程化的趨勢。項(xiàng)目維護(hù)方便也是事實(shí)。如果有遇到問題可以直接在教程下面留言。 前言 年底了不太忙,最近一段時(shí)間也一直在研究laravel,就想寫篇關(guān)于laravel比較深一點(diǎn)的教程系列啥的,于是就找到站長給開了寫教程的渠道。由于第一次寫,...
摘要:更多擴(kuò)展包中有豐富的擴(kuò)展包來幫你完成幾乎任何你想實(shí)現(xiàn)的功能。我們不能把所有的擴(kuò)展包都整理出來,然而,這里還是列出了一些很有用的。總之,你幾乎總是能夠找到一個(gè)擴(kuò)展包可以解決你當(dāng)前的問題。 Laravel 是一個(gè)非常流行且簡單易用的PHP框架,它提供了很多基礎(chǔ)的工具(如 RESTful 路由、內(nèi)置的ORM、模版等)使你能夠快速的創(chuàng)建應(yīng)用。這意味著你可以花費(fèi)更少的時(shí)間來建立應(yīng)用程序的模版,給...
使用場景 在引用第三方包的時(shí)候,對第三方包有改動(dòng)需求,需要將代碼放在自己的倉庫;并且自己的其他項(xiàng)目也有需求引用自定義的第三方包;甚至自己會(huì)發(fā)布修改后的第三方包; 讀完本文你講獲得: Git Submodule的基本使用 從本地加載第三方包 從自定義倉庫地址獲取擴(kuò)展包 快速創(chuàng)建第三方包 本文是在我自己想要?jiǎng)?chuàng)建一個(gè)基礎(chǔ)第三方包的時(shí)候記錄下的操作步驟 1、利用git submoudle在已有項(xiàng)目中使...
摘要:現(xiàn)在已經(jīng)有了很多,關(guān)于如何開發(fā)擴(kuò)展包的文章。提交代碼到首先,需要把擴(kuò)展包的代碼提交到上,記錄下版本庫的地址,注意是。填寫完畢,提交后,記得測試一次,完成首次同步,成功會(huì)提示信息。 現(xiàn)在已經(jīng)有了很多,關(guān)于如何開發(fā) Laravel 擴(kuò)展包的文章。但是大多文章寫的太過片面,不夠完整,而且我在實(shí)際進(jìn)行開發(fā)擴(kuò)展包的時(shí)候,還是遇到了很多的問題,我把自己的開發(fā)經(jīng)驗(yàn),以及遇到的問題記錄下來,分享給大家...
閱讀 1364·2021-11-15 11:45
閱讀 3130·2021-09-27 13:36
閱讀 2876·2019-08-30 15:54
閱讀 993·2019-08-29 12:38
閱讀 2912·2019-08-29 11:22
閱讀 2995·2019-08-26 13:52
閱讀 2040·2019-08-26 13:30
閱讀 592·2019-08-26 10:37