摘要:本文參考超哥寫的基于的模塊化開發的詳細實踐版。包本地開發本地開發一個包做法基本與包開發一樣,簡單過一下吧。首先創建一個新的項目在項目中創建如下目錄為我們要發布的包,對應為,對應為項目名。
本文參考超哥寫的 基于 Composer 的 PHP 模塊化開發 的詳細實踐版。
開發痛點
我相信很多人,對 composer 不了解,在開發包的時候會這樣做:
創建項目(jcc/new-package) -> 寫業務邏輯 -> push 到代碼倉庫 -> 創建調試項目 -> 安裝包(composer require jcc/new-package -vvv) -> 調試 -> 修改項目 -> push 更新代碼 -> 在調試項目中更新包代碼 (composer update -vvv) -> ...
由此可見,不斷重復的提交代碼,更新代碼,非常的麻煩,而且不能實時調試。
本文主要解決的問題:
本地開發包時,可本地測試,不需將代碼提交到第三方代碼倉庫,再 composer require 安裝到項目中測試:
創建項目(jcc/new-package) -> 寫業務邏輯 -> 創建調試項目 -> 配置 composer.json -> 調試 -> 修改項目 -> 直接在調試項目調試 -> ...
由此可見,本地開發可減少 git 提交拉取代碼的時間,降低了提交的每一個版本盡可能出現的低級錯誤。
本地包開發的工作原理:
Composer 將本地開發的包通過軟連接的方式,從新項目( jcc/taxi )軟連接到調試項目( jcc/test-taxi/vendor/jcc/texi )
Composer 包本地開發主要用到了 repositories 的 path 類型,更新信息請移步 文檔
首先我們看一下 Composer 安裝包的結構,正常使用的情況下,拿一個安裝好 laravel/laravel)為例子,打開 vendor 目錄下的 laravel 會看到以下的結構:
vendor/laravel ├── framework │?? └── src │?? └── Illuminate │?? └── ... └── tinker └── src └── Console
同時看一下 Laravel 項目下的 composer.json 文件的 require 或 require-dev 的依賴包:
{ ..., "require": { "php": ">=7.0.0", "fideloper/proxy": "~3.3", "laravel/framework": "5.5.*", "laravel/tinker": "~1.0" }, ... }
由此可以知道目錄結構是對應關系的。
創建目錄并初始化當然在初始化創建目錄的時候,要注意項目名跟目錄結構一致,例如我的新項目叫 jcc/taxi 那么我創建的目錄結構應該這樣子:
jcc └── taxi
接著我們需要在 taxi 下進來進一步的開發,當然,在開發前需要先初始化 composer 配置,在 taxi 目錄下運行:
composer init
按照指示填寫信息即可:
在 texi 目錄下會多出 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": {} }創建開發目錄并設置必要信息
一般情況下,我們會創建 2 個目錄,一個是 src 用于存放包所有的邏輯代碼,一個是 tests 用于存放測試用例:
jcc/taxi ├── src ├── tests ├── README.md ├── composer.json └── LICENSE
要注意的是,我們需要再 composer.json 設置一下 composer 自動加載配置,在 composer.json 加入:
{ ..., "autoload": { "psr-4": { "JccTaxi": "src/" } }, "autoload-dev": { "psr-4": { "JccTaxiTests": "tests/" } }, ... }
創建測試包項目更多可以看一下 Composer 自動加載文檔
首先,在 jcc 目錄下創建一個新的項目,用于測試:
jcc ├── taxi └── test-taxi
接著初始化 composer 配置,生成 composer.json 文件:
composer init
然后添加 Repositories 項目,有兩種方式:
第一種:直接運行命令
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 為項目的相對路徑.
接下來就是添加依賴,同樣有兩種方式:
Shell:
composer require jcc/taxi:dev-master -vvv
composer.json 中添加:
{ ..., "require": { "jcc/taxi": "dev-master" }, ... }
開發以及測試當然要注意版本號,必須在 jcc/taxi 項目中的 composer.json 中設置 minimum-stability 屬性,不然在安裝包的時候會報找不到版本號的錯。
首先在 jcc/taxi 項目下的 src 中創建 Client.php 文件:
a = $a; $this->b = $b; } public function addTogether() { return $this->a + $this->b; } }
在 jcc/test-taxi 目錄下安裝一下 jcc/taxi 項目后,添加 test.php 文件:
// 引入 composer 自動加載文件 require __DIR__ . "/vendor/autoload.php" $client = new JccTaxiClient(5, 1); echo $client->addTogether() . " ";
最后,在 jcc/test-taxi 目錄下運行 test.php 文件,即可得出相加的結果:
php test.php
如果你細心點,會發現,jcc/test-taxi 的 vendor 目錄下的 jcc/taxi 依賴項目是一個 軟連接。也就是說,你在 jcc/taxi 中的 Client.php 文件添加一個新方法,然后在 jcc/test-taxi 項目中調用即可,不需要重新 composer update 包哦。非常方便。
Laravel 包本地開發本地開發一個 Laravel 包做法基本與 Composer 包開發一樣,簡單過一下吧。
首先創建一個新的 Laravel 項目:
composer create-project laravel/laravel laravel -vvv
在 Laravel 項目中創建如下目錄:
laravel ├── app ├── ... └── packages └── jcc └── taxi ├── LICENSE ├── README.md ├── composer.json ├── src │?? ├── Taxi.php │?? └── TaxiServiceProvider.php └── tests
jcc/taxi (vendor/name) 為我們要發布的 Laravel 包,jcc 對應為 github username,taxi 對應為 項目名。
首先初始化 composer 配置,這個跟正常包開發沒區別,然后在 jcc/taxi 下的 src 目錄創建 TaxiServiceProvider.php 文件:
app->singleton("taxi", function () { return new Taxi; }); } }
創建 Taxi.php 文件:
最后就是想包注冊到 laravel 項目中,在 config/app.php 添加:
return [ ..., "providers" => [ ..., JccTaxiTaxiServiceProvider::Class, ], ];修改 laravel 項目下的 composer.json 文件:
{ ..., "autoload": { ..., "psr-4": { ..., "JccTaxi": "packages/jcc/taxi/src/" } }, ... }并運行命令:
composer dump-autoload最后在 web.php 中修改一下:
Route::get("/", function () { app("taxi")->printRunning(); });此時,我們訪問 laravel 項目的主頁時,會顯示 running 這個單詞,則恭喜你,成功了。
開發一個包說難不難,說易也不易,最重要的是你需要有源源不斷的創造力!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25758.html
摘要:廢話不多說,下面我簡單介紹一下兩個包的用法吧。還有的是這里使用了,如何去理解以及更好地使用最后,當然是要感謝超哥。經討論更名為更名為更名為更名為 showImg(https://pigjian.com/storage/post_img/2017-04-12/follow-vote.png); 本文主要介紹兩個包: Laravel - Follow : https://github.co...
摘要:現在已經有了很多,關于如何開發擴展包的文章。提交代碼到首先,需要把擴展包的代碼提交到上,記錄下版本庫的地址,注意是。填寫完畢,提交后,記得測試一次,完成首次同步,成功會提示信息。 現在已經有了很多,關于如何開發 Laravel 擴展包的文章。但是大多文章寫的太過片面,不夠完整,而且我在實際進行開發擴展包的時候,還是遇到了很多的問題,我把自己的開發經驗,以及遇到的問題記錄下來,分享給大家...
使用場景 在引用第三方包的時候,對第三方包有改動需求,需要將代碼放在自己的倉庫;并且自己的其他項目也有需求引用自定義的第三方包;甚至自己會發布修改后的第三方包; 讀完本文你講獲得: Git Submodule的基本使用 從本地加載第三方包 從自定義倉庫地址獲取擴展包 快速創建第三方包 本文是在我自己想要創建一個基礎第三方包的時候記錄下的操作步驟 1、利用git submoudle在已有項目中使...
摘要:我是直接從開始學習的,所以之前版本并未考慮。我在上用的是和一個本地,并未做很多環境配置,只是簡單開始。如果更有興趣的,可以使用官方推薦使用的本地開發環境,不污染本地系統,放上安裝教程地址網上有很棒很簡單地環境搭建工具如 我是直接從laravel5.1開始學習的,所以之前版本并未考慮。 我在mac上用的是composer、phpstorm 和一個本地mysql,并未做很多環境配置,只是...
摘要:自動代碼擴展開發時遵守的代碼風格是項目開發規范。遵照此規范,在實際操作中,有許多重復,接下來推薦一款專為此規范量身定制的代碼生成器。可以利用此擴展來快速構建項目原型。后續還會為大家帶來一些最新的技術擴展。 whoops 錯誤提示擴展 whoops 是一個非常優秀的 PHP Debug 擴展,它能夠使你在開發中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
閱讀 1759·2021-11-11 16:55
閱讀 2545·2021-08-27 13:11
閱讀 3622·2019-08-30 15:53
閱讀 2301·2019-08-30 15:44
閱讀 1378·2019-08-30 11:20
閱讀 1036·2019-08-30 10:55
閱讀 943·2019-08-29 18:40
閱讀 3029·2019-08-29 16:13