亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Composer & Laravel 包本地開發(fā)

levius / 1427人閱讀

摘要:本文參考超哥寫的基于的模塊化開發(fā)的詳細(xì)實(shí)踐版。包本地開發(fā)本地開發(fā)一個(gè)包做法基本與包開發(fā)一樣,簡(jiǎn)單過一下吧。首先創(chuàng)建一個(gè)新的項(xiàng)目在項(xiàng)目中創(chuàng)建如下目錄為我們要發(fā)布的包,對(duì)應(yīng)為,對(duì)應(yīng)為項(xiàng)目名。

本文參考超哥寫的 基于 Composer 的 PHP 模塊化開發(fā) 的詳細(xì)實(shí)踐版。

開發(fā)痛點(diǎn)

我相信很多人,對(duì) composer 不了解,在開發(fā)包的時(shí)候會(huì)這樣做:

創(chuàng)建項(xiàng)目(jcc/new-package) -> 寫業(yè)務(wù)邏輯 -> push 到代碼倉庫 -> 創(chuàng)建調(diào)試項(xiàng)目 -> 安裝包(composer require jcc/new-package -vvv) -> 調(diào)試 -> 修改項(xiàng)目 -> push 更新代碼 -> 在調(diào)試項(xiàng)目中更新包代碼 (composer update -vvv) -> ...

由此可見,不斷重復(fù)的提交代碼,更新代碼,非常的麻煩,而且不能實(shí)時(shí)調(diào)試。

本文主要解決的問題:
本地開發(fā)包時(shí),可本地測(cè)試,不需將代碼提交到第三方代碼倉庫,再 composer require 安裝到項(xiàng)目中測(cè)試:

創(chuàng)建項(xiàng)目(jcc/new-package) -> 寫業(yè)務(wù)邏輯 -> 創(chuàng)建調(diào)試項(xiàng)目 -> 配置 composer.json -> 調(diào)試 -> 修改項(xiàng)目 -> 直接在調(diào)試項(xiàng)目調(diào)試 -> ...

由此可見,本地開發(fā)可減少 git 提交拉取代碼的時(shí)間,降低了提交的每一個(gè)版本盡可能出現(xiàn)的低級(jí)錯(cuò)誤。

本地包開發(fā)的工作原理:
Composer 將本地開發(fā)的包通過軟連接的方式,從新項(xiàng)目( jcc/taxi )軟連接到調(diào)試項(xiàng)目( jcc/test-taxi/vendor/jcc/texi )

主要用到了 repositories 的 path 類型,更新信息請(qǐng)移步 文檔

Composer 包本地開發(fā)

首先我們看一下 Composer 安裝包的結(jié)構(gòu),正常使用的情況下,拿一個(gè)安裝好 laravel/laravel)為例子,打開 vendor 目錄下的 laravel 會(huì)看到以下的結(jié)構(gòu):

vendor/laravel
├── framework
│?? └── src
│??     └── Illuminate
│??         └── ...
└── tinker
    └── src
        └── Console

同時(shí)看一下 Laravel 項(xiàng)目下的 composer.json 文件的 require 或 require-dev 的依賴包:

{
      ...,
    "require": {
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0"
    },
      ...
}

由此可以知道目錄結(jié)構(gòu)是對(duì)應(yīng)關(guān)系的。

創(chuàng)建目錄并初始化

當(dāng)然在初始化創(chuàng)建目錄的時(shí)候,要注意項(xiàng)目名跟目錄結(jié)構(gòu)一致,例如我的新項(xiàng)目叫 jcc/taxi 那么我創(chuàng)建的目錄結(jié)構(gòu)應(yīng)該這樣子:

jcc
└── taxi

接著我們需要在 taxi 下進(jìn)來進(jìn)一步的開發(fā),當(dāng)然,在開發(fā)前需要先初始化 composer 配置,在 taxi 目錄下運(yùn)行:

composer init

按照指示填寫信息即可:

在 texi 目錄下會(huì)多出 composer.json 文件:

{
    "name": "jcc/taxi",
    "description": "This is a test.",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "jcc",
            "email": "changejian@gmail.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}
創(chuàng)建開發(fā)目錄并設(shè)置必要信息

一般情況下,我們會(huì)創(chuàng)建 2 個(gè)目錄,一個(gè)是 src 用于存放包所有的邏輯代碼,一個(gè)是 tests 用于存放測(cè)試用例:

jcc/taxi
├── src
├── tests
├── README.md
├── composer.json
└── LICENSE

要注意的是,我們需要再 composer.json 設(shè)置一下 composer 自動(dòng)加載配置,在 composer.json 加入:

{
      ...,
    "autoload": {
        "psr-4": {
            "JccTaxi": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "JccTaxiTests": "tests/"
        }
    },
      ...
}

更多可以看一下 Composer 自動(dòng)加載文檔

創(chuàng)建測(cè)試包項(xiàng)目

首先,在 jcc 目錄下創(chuàng)建一個(gè)新的項(xiàng)目,用于測(cè)試:

jcc
├── taxi
└── test-taxi

接著初始化 composer 配置,生成 composer.json 文件:

composer init

然后添加 Repositories 項(xiàng)目,有兩種方式:

第一種:直接運(yùn)行命令

composer config repositories.jcc path /Users/jiajianchan/Sites/jcc/taxi

第二種:直接在 composer.json 文件添加:

{
      ...,
    "repositories": {
        "jcc": {
            "type": "path",
            "url": "/Users/jiajianchan/Sites/jcc/taxi"
        }
    }
}

type 類型為 path,url 為項(xiàng)目的相對(duì)路徑.

接下來就是添加依賴,同樣有兩種方式:
Shell:

composer require jcc/taxi:dev-master -vvv

composer.json 中添加:

{
    ...,
    "require": {
     "jcc/taxi": "dev-master"
    },
    ...
}

當(dāng)然要注意版本號(hào),必須在 jcc/taxi 項(xiàng)目中的 composer.json 中設(shè)置 minimum-stability 屬性,不然在安裝包的時(shí)候會(huì)報(bào)找不到版本號(hào)的錯(cuò)。

開發(fā)以及測(cè)試

首先在 jcc/taxi 項(xiàng)目下的 src 中創(chuàng)建 Client.php 文件:

a = $a;
        $this->b = $b;
    }

    public function addTogether()
    {
        return $this->a + $this->b;
    }
}

在 jcc/test-taxi 目錄下安裝一下 jcc/taxi 項(xiàng)目后,添加 test.php 文件:

// 引入 composer 自動(dòng)加載文件
require __DIR__ . "/vendor/autoload.php"

$client = new JccTaxiClient(5, 1);

echo $client->addTogether() . "
";

最后,在 jcc/test-taxi 目錄下運(yùn)行 test.php 文件,即可得出相加的結(jié)果:

php test.php

如果你細(xì)心點(diǎn),會(huì)發(fā)現(xiàn),jcc/test-taxi 的 vendor 目錄下的 jcc/taxi 依賴項(xiàng)目是一個(gè) 軟連接。也就是說,你在 jcc/taxi 中的 Client.php 文件添加一個(gè)新方法,然后在 jcc/test-taxi 項(xiàng)目中調(diào)用即可,不需要重新 composer update 包哦。非常方便。

Laravel 包本地開發(fā)

本地開發(fā)一個(gè) Laravel 包做法基本與 Composer 包開發(fā)一樣,簡(jiǎn)單過一下吧。

首先創(chuàng)建一個(gè)新的 Laravel 項(xiàng)目:

composer create-project laravel/laravel laravel -vvv

在 Laravel 項(xiàng)目中創(chuàng)建如下目錄:

laravel
├── app
├── ...
└── packages
    └── jcc
        └── taxi
            ├── LICENSE
            ├── README.md
            ├── composer.json
            ├── src
            │?? ├── Taxi.php
            │?? └── TaxiServiceProvider.php
            └── tests

jcc/taxi (vendor/name) 為我們要發(fā)布的 Laravel 包,jcc 對(duì)應(yīng)為 github username,taxi 對(duì)應(yīng)為 項(xiàng)目名。

首先初始化 composer 配置,這個(gè)跟正常包開發(fā)沒區(qū)別,然后在 jcc/taxi 下的 src 目錄創(chuàng)建 TaxiServiceProvider.php 文件:

app->singleton("taxi", function () {
            return new Taxi;
        });
    }
}

創(chuàng)建 Taxi.php 文件:


最后就是想包注冊(cè)到 laravel 項(xiàng)目中,在 config/app.php 添加:

return [
    ...,
    "providers" => [
        ...,
        JccTaxiTaxiServiceProvider::Class,
    ],
];

修改 laravel 項(xiàng)目下的 composer.json 文件:

{
    ...,
    "autoload": {
        ...,
        "psr-4": {
            ...,
            "JccTaxi": "packages/jcc/taxi/src/"
        }
    },
    ...
}

并運(yùn)行命令:

composer dump-autoload

最后在 web.php 中修改一下:

Route::get("/", function () {
    app("taxi")->printRunning();
});

此時(shí),我們?cè)L問 laravel 項(xiàng)目的主頁時(shí),會(huì)顯示 running 這個(gè)單詞,則恭喜你,成功了。

開發(fā)一個(gè)包說難不難,說易也不易,最重要的是你需要有源源不斷的創(chuàng)造力!

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

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

相關(guān)文章

  • 簡(jiǎn)化你的關(guān)注與點(diǎn)贊 - Laravel Follow & Vote

    摘要:廢話不多說,下面我簡(jiǎn)單介紹一下兩個(gè)包的用法吧。還有的是這里使用了,如何去理解以及更好地使用最后,當(dāng)然是要感謝超哥。經(jīng)討論更名為更名為更名為更名為 showImg(https://pigjian.com/storage/post_img/2017-04-12/follow-vote.png); 本文主要介紹兩個(gè)包: Laravel - Follow : https://github.co...

    CodeSheep 評(píng)論0 收藏0
  • 如何開發(fā)、本地測(cè)試、發(fā)布 Laravel 擴(kuò)展?

    摘要:現(xiàn)在已經(jīng)有了很多,關(guān)于如何開發(fā)擴(kuò)展包的文章。提交代碼到首先,需要把擴(kuò)展包的代碼提交到上,記錄下版本庫的地址,注意是。填寫完畢,提交后,記得測(cè)試一次,完成首次同步,成功會(huì)提示信息。 現(xiàn)在已經(jīng)有了很多,關(guān)于如何開發(fā) Laravel 擴(kuò)展包的文章。但是大多文章寫的太過片面,不夠完整,而且我在實(shí)際進(jìn)行開發(fā)擴(kuò)展包的時(shí)候,還是遇到了很多的問題,我把自己的開發(fā)經(jīng)驗(yàn),以及遇到的問題記錄下來,分享給大家...

    nanchen2251 評(píng)論0 收藏0
  • 基于ComposerLaravel擴(kuò)展開發(fā)工作流

    使用場(chǎng)景 在引用第三方包的時(shí)候,對(duì)第三方包有改動(dòng)需求,需要將代碼放在自己的倉庫;并且自己的其他項(xiàng)目也有需求引用自定義的第三方包;甚至自己會(huì)發(fā)布修改后的第三方包; 讀完本文你講獲得: Git Submodule的基本使用 從本地加載第三方包 從自定義倉庫地址獲取擴(kuò)展包 快速創(chuàng)建第三方包 本文是在我自己想要?jiǎng)?chuàng)建一個(gè)基礎(chǔ)第三方包的時(shí)候記錄下的操作步驟 1、利用git submoudle在已有項(xiàng)目中使...

    Faremax 評(píng)論0 收藏0
  • laravel-0.0.1】簡(jiǎn)單開始laravel5.1

    摘要:我是直接從開始學(xué)習(xí)的,所以之前版本并未考慮。我在上用的是和一個(gè)本地,并未做很多環(huán)境配置,只是簡(jiǎn)單開始。如果更有興趣的,可以使用官方推薦使用的本地開發(fā)環(huán)境,不污染本地系統(tǒng),放上安裝教程地址網(wǎng)上有很棒很簡(jiǎn)單地環(huán)境搭建工具如 我是直接從laravel5.1開始學(xué)習(xí)的,所以之前版本并未考慮。 我在mac上用的是composer、phpstorm 和一個(gè)本地mysql,并未做很多環(huán)境配置,只是...

    chinafgj 評(píng)論0 收藏0
  • laravel開發(fā)擴(kuò)展記錄

    摘要:自動(dòng)代碼擴(kuò)展開發(fā)時(shí)遵守的代碼風(fēng)格是項(xiàng)目開發(fā)規(guī)范。遵照此規(guī)范,在實(shí)際操作中,有許多重復(fù),接下來推薦一款專為此規(guī)范量身定制的代碼生成器??梢岳么藬U(kuò)展來快速構(gòu)建項(xiàng)目原型。后續(xù)還會(huì)為大家?guī)硪恍┳钚碌募夹g(shù)擴(kuò)展。 whoops 錯(cuò)誤提示擴(kuò)展 whoops 是一個(gè)非常優(yōu)秀的 PHP Debug 擴(kuò)展,它能夠使你在開發(fā)中快速定位出錯(cuò)的位置。laravel默認(rèn)安裝。showImg(https://s...

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

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

0條評(píng)論

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