成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于Composer的Laravel擴(kuò)展包開發(fā)工作流

Faremax / 3136人閱讀

使用場(chǎng)景
在引用第三方包的時(shí)候,對(duì)第三方包有改動(dòng)需求,需要將代碼放在自己的倉(cāng)庫(kù);并且自己的其他項(xiàng)目也有需求引用自定義的第三方包;甚至自己會(huì)發(fā)布修改后的第三方包;
讀完本文你講獲得:

Git Submodule的基本使用

從本地加載第三方包

從自定義倉(cāng)庫(kù)地址獲取擴(kuò)展包

快速創(chuàng)建第三方包

本文是在我自己想要?jiǎng)?chuàng)建一個(gè)基礎(chǔ)第三方包的時(shí)候記錄下的操作步驟
1、利用git submoudle在已有項(xiàng)目中使用第三方包
通常利用composer安裝的包均在vendor目錄下,并且倉(cāng)庫(kù)地址均指向第三方包作者的倉(cāng)庫(kù),而這時(shí)候修改第三方包,一是無(wú)法納入git管理庫(kù),二是提交pull requests需要等待作者的審核更新,未必會(huì)采納
1)Fork對(duì)方項(xiàng)目
2)下載fork后的項(xiàng)目到本地
> mkdir packages
> git submodule add https://github.com/mpandar/laravel-packager.git packages/mpandar/laravel-packager
3)之后可以對(duì)該包內(nèi)容進(jìn)行編輯,并在packages/mpandar/laravel-packager目錄使用git的命令,提交文件
2、調(diào)整composer.json內(nèi)容,使項(xiàng)目能夠使用自定義包內(nèi)容
composer的包自動(dòng)發(fā)現(xiàn)機(jī)制其實(shí)就是利用的psr-4(中文)
    // autoload - psr-4 是項(xiàng)目主目錄src
    // autoload - files 主要就是加載helper函數(shù)
    // autoload-dev - psr-4 主要是test
    "autoload": {
        "psr-4": {
            "JeroenGPackager": "packages/mpandar/laravel-packager/src"
        },
        "files": [
            "packages/mpandar/wechat/src/Kernel/Helpers.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "JeroenGPackagerTests": "packages/mpandar/laravel-packager/tests"
        }
    },
添加完成后要運(yùn)行 composer dumpautoload,否則下面添加ServiceProvider會(huì)報(bào)錯(cuò),找不到對(duì)應(yīng)ServiceProvider
3、添加包的ServiceProvider
由于laravel的 package:discover 是讀取 vendor/composer/installed.json 這個(gè)文件中安裝的包,而我們的包是手動(dòng)添加,所以無(wú)法自動(dòng)添加ServiceProvider,手動(dòng)在app.php中添加
    "providers" => [
       JeroenGPackagerPackagerServiceProvider::class,
    ],
    "aliases" => [
        "CreditsShop" => MpandarCreditsShopFacadesCreditsShop::class,
    ],
通過 php artist list 可以看到該包中的命令已經(jīng)被添加
4、其他項(xiàng)目使用自定義包

JeroenGPackager是用來(lái)快速創(chuàng)建基于laravel的擴(kuò)展包,使用過程中,發(fā)現(xiàn)一點(diǎn)小的問題,比如 php artisan packager:new mpandar laravel-cart理想的目錄結(jié)構(gòu)應(yīng)該是

packages
    |-mpandar
        |-laravel-cart
            |-src
                |-LaravelCartProvider.php
                |-LaravelCart.php
                |-Facades
                    |-LaravelCart.php

但其實(shí)際創(chuàng)建的Provider卻命名為laravel-cartProvider,如果使用php artisan packager:new mpandar LaravelCart,目錄名稱又會(huì)錯(cuò),所以我修復(fù)了這個(gè)問題(也可能是我不會(huì)用...)

// dev-master 表示取master分支
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/mpandar/laravel-packager"
        }
    ],
    "require": {
        "jeroen-g/laravel-packager": "dev-master"
    },
// composer update 即可
5、為L(zhǎng)aravel開發(fā)擴(kuò)展包
利用jeroen-g/laravel-packager很容易創(chuàng)建一個(gè)擴(kuò)展包基礎(chǔ)項(xiàng)目
> php artisan packager:new mpandar credits-shop
 0/6 [>---------------------------]   0% Creating package mpandarcredits-shop...
 1/6 [====>-----------------------]  16% Creating packages directory...
 2/6 [=========>------------------]  33% Creating vendor...
 3/6 [==============>-------------]  50% Downloading skeleton...
 4/6 [==================>---------]  66% Replacing skeleton placeholders...
 5/6 [=======================>----]  83% Dumping autoloads and discovering package...
Generating optimized autoload files
> IlluminateFoundationComposerScripts::postAutoloadDump
> @php artisan package:discover
 6/6 [============================] 100% Package created successfully!

其創(chuàng)建的目錄結(jié)構(gòu):


并在composer.json以及app.php中自動(dòng)添加了相關(guān)配置。
ok,接下來(lái)就可以進(jìn)行擴(kuò)展包的開發(fā)了!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29275.html

相關(guān)文章

  • 剛接觸一個(gè) Laravel 項(xiàng)目,你可以從這些地方入手

    摘要:在每一個(gè)的項(xiàng)目主頁(yè)上,展示了擴(kuò)展包的介紹版本號(hào)倉(cāng)庫(kù)地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結(jié)服務(wù)提供者是所有應(yīng)用程序引導(dǎo)中心。你可以瀏覽位于目錄下的所有應(yīng)用程序服務(wù)提供者。 當(dāng)你接手一個(gè)新項(xiàng)目的時(shí)候,可能會(huì)感到無(wú)從下手,如果不熟悉編程,則更是如此。那么,我們?cè)搹哪膬喝胧帜???xiàng)目代碼的哪些部分我們需要著重了解?下面我們看看 Laravel 項(xiàng)目的幾個(gè)通用的部分。 項(xiàng)目文...

    ranwu 評(píng)論0 收藏0
  • 剛接觸一個(gè) Laravel 項(xiàng)目,你可以從這些地方入手

    摘要:在每一個(gè)的項(xiàng)目主頁(yè)上,展示了擴(kuò)展包的介紹版本號(hào)倉(cāng)庫(kù)地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結(jié)服務(wù)提供者是所有應(yīng)用程序引導(dǎo)中心。你可以瀏覽位于目錄下的所有應(yīng)用程序服務(wù)提供者。 showImg(https://segmentfault.com/img/bV6vPF?w=1200&h=500); 當(dāng)你接手一個(gè)新項(xiàng)目的時(shí)候,可能會(huì)感到無(wú)從下手,如果不熟悉編程,則更是如此。那么...

    RyanQ 評(píng)論0 收藏0
  • [開源] LaravelPlus - 基于 Laravel 魔改,為方便實(shí)際業(yè)務(wù)使用 - 開發(fā)

    摘要:目的為了減少重復(fù)和新項(xiàng)目的配置麻煩等問題,就是為了騙星星如現(xiàn)有的生成工具雖然好用,但是不太喜歡樣式和代碼結(jié)構(gòu)。有些本地,測(cè)試,線上的配置需要頻繁改動(dòng)的需要。 目的 為了減少重復(fù) CURD 和新項(xiàng)目的配置麻煩等問題,(就是為了騙星星:LaravelPlus )如: 現(xiàn)有的 infyomlabs/laravel-generator CODE 生成工具雖然好用,但是不太喜歡樣式和代碼結(jié)構(gòu)。...

    weknow619 評(píng)論0 收藏0
  • laravel package收集

    摘要:查找保存下載用搭建自己的緩存?zhèn)}庫(kù)權(quán)限管理的好選擇基于封裝的后臺(tái)管理系統(tǒng),支持手機(jī)和端訪問支付寶風(fēng)格的驗(yàn)證器后臺(tái)系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動(dòng)記錄用戶行為擴(kuò)展一個(gè)項(xiàng)目管理系統(tǒng)根據(jù)生成對(duì)應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 評(píng)論0 收藏0
  • 如何正確使用 Composer 安裝 Laravel 擴(kuò)展

    摘要:流程一新項(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ū) 問題說(shuō)明 我們經(jīng)常要往現(xiàn)有的項(xiàng)目中添加擴(kuò)展包,有時(shí)候因?yàn)槲臋n的錯(cuò)誤引導(dǎo),如下圖來(lái)自 這個(gè)文檔 的: showImg(https://dn-...

    BlackMass 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<