摘要:系統(tǒng)學(xué)習(xí)的使用請移步中文學(xué)習(xí)開發(fā)自己的組件要點理解如何實現(xiàn)自動加載第三方組件理解和的規(guī)范理解基于如何實現(xiàn)自動加載。
composer是什么
Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個項目的基礎(chǔ)上進(jìn)行管理,在你項目的某個目錄中(例如 vendor)進(jìn)行安裝。默認(rèn)情況下它不會在全局安裝任何東西。因此,這僅僅是一個依賴管理。
Composer 受到了 node"s npm 和 ruby"s bundler 的強烈啟發(fā)。而當(dāng)時 PHP 下并沒有類似的工具。
composer可以做什么 Composer 將這樣為你解決問題:你有一個項目依賴于若干個庫。
其中一些庫依賴于其他庫。
你聲明你所依賴的東西。
Composer 會找出哪個版本的包需要安裝,并安裝它們(將它們下載到你的項目中)。
開發(fā)自己的composer組件系統(tǒng)學(xué)習(xí)composer的使用請移步 composer中文學(xué)習(xí)
關(guān)于安裝和使用composer請參考composer中文學(xué)習(xí) 創(chuàng)建目錄名稱要點:理解composer如何實現(xiàn)自動加載第三方組件; 理解psr-0和psr-4的規(guī)范; 理解基于psr-0,psr-4,classmap,files如何實現(xiàn)自動加載。 理解Composer和Packagist
mkdir try-make-package cd try-make-package
這個try-make-package文件夾就是你的包的根目錄了,你只需要記住composer.json在包的哪個目錄下面,一般那就是包的根目錄了。
現(xiàn)在我們還沒有composer.json文件,下面我們來初始化
? composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (/ ) [lingan/try-make-package]: Description []: try make a package Author [saboran , n to skip]: Minimum Stability []: dev Package Type (e.g. library, project, metapackage, composer-plugin) []: library License []: MIT Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? n Would you like to define your dev dependencies (require-dev) interactively [yes]? n { "name": "lingan/try-make-package", "description": "try make a package", "type": "library", "license": "MIT", "authors": [ { "name": "saboran", "email": "saboran@163.com" } ], "minimum-stability": "dev", "require": {} } Do you confirm generation [yes]? yes
經(jīng)過一番上面的掙扎在當(dāng)前目錄就生成了composer.json文件,下面我們對這個文件進(jìn)行一些修改
修改composer.json增加自動加載規(guī)范(命名空間和目錄映射關(guān)系)和環(huán)境要求{ "name": "lingan/try-make-package", "description": "try make a package", "type": "library", "license": "MIT", "authors": [ { "name": "saboran", "email": "saboran@163.com" } ], "minimum-stability": "dev", "require": { "php": ">=7.0" }, "autoload": { "psr-4": { "FlowerRose": "src/Flower/Rose", "FlowerLily": "src/Flower/Lily" } } }創(chuàng)建類文件
根據(jù)上面的命名空間和目錄的映射關(guān)系,創(chuàng)建對應(yīng)目錄和文件,如下圖
對應(yīng)文件內(nèi)容
測試安裝以上代碼都梳理完畢后,需要composer install來測試我們的包是否可以正常工作此時會在vendor/composer/autoload_psr4.php中生成命名空間和目錄的映射關(guān)系,被包在一個數(shù)組中:
array($baseDir . "/src/Flower/Rose"), "FlowerLily" => array($baseDir . "/src/Flower/Lily"), );增加.gitignore為git忽略一些文件,增加readme.md為項目增加描述.idea vendor/ composer.lock提交代碼到github現(xiàn)在自己的Github主頁上創(chuàng)建一個新的倉庫然后將項目提交到對應(yīng)倉庫,參考如下
git init git add -A git commit -am "init && dev package" git remote add origin git@github.com:linganmin/try-make-package.git git push -u origin master登錄自己的packagist submit(自己注冊)將自己的項目地址粘貼
測試使用自己開發(fā)的包擴(kuò)展[2017.11.07更新]
點擊check,然后點擊submit,至此,自己的composer包就提交成功了,創(chuàng)建測試目錄
mkdir test-my-package cd test-my-package安裝自己的擴(kuò)展
composer require lingan/try-make-package dev-master ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing lingan/try-make-package (dev-master d7b9f94): Cloning d7b9f941b0 from cache Writing lock file Generating autoload files安裝完成的目錄如下圖
查看autoload_psr4.php
array($vendorDir . "/lingan/try-make-package/src/Flower/Rose"), "FlowerLily" => array($vendorDir . "/lingan/try-make-package/src/Flower/Lily"), );新建首頁入口文件index.php,開始測試自己寫的包
desc(); echo " "; echo $lily->desc();執(zhí)行
php index.php this is rose flower this is lily flower%* 至此說明我們自己開發(fā)的擴(kuò)展包可以正常使用
設(shè)置Packagist上自動更新擴(kuò)展包,即當(dāng)我們更新擴(kuò)展包提交到GitHub時,Packagist自動更新在沒有設(shè)置自動更新時,Packagist上包詳情頁會有這樣一個提示
This package is not auto-updated. Please set up the GitHub Service Hook for Packagist so that it gets updated whenever you push!(這個軟件包不是自動更新的。請為Packagist 設(shè)置GitHub服務(wù)鉤,以便在您推送時更新!)
詳細(xì)設(shè)置自動更新軟件包的文檔地址
簡化步驟如下:
去個人中心頁面拿到自己的api令牌
去當(dāng)前包在GitHub的地址,點擊設(shè)置,點擊集成和服務(wù),點擊添加Packagist服務(wù)并配置你的API令牌,以及你的Packagist用戶名和賬號對應(yīng)域名
選擇active,點擊add service
設(shè)置自動更新結(jié)束,之后你更改了自己包擴(kuò)展的代碼提交到GitHub后,很短的時間差就會同步到Packagist
結(jié)束語作為一枚渣渣,發(fā)現(xiàn)自己的不足,嘗試接觸更多新技術(shù)和工具,以上文字若有錯誤歡迎指正
Happy Coding
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26031.html
摘要:首先支持下黃老師的視頻網(wǎng)站轉(zhuǎn)型這篇的學(xué)習(xí)筆記也是根據(jù)他的視頻教程寫的,一共十集,講解的很簡單感興趣的同志們可以上他視頻網(wǎng)站購買視頻,網(wǎng)站地址放在文末我的博客作用自動安裝所需要的模塊,自動加載管理項目,發(fā)布到網(wǎng)上上去是默認(rèn)的加載組件地址安裝下 首先支持下黃老師的視頻網(wǎng)站轉(zhuǎn)型這篇composer的學(xué)習(xí)筆記也是根據(jù)他的視頻教程寫的,一共十集,講解的很簡單感興趣的同志們可以上他視頻網(wǎng)站購買視頻...
摘要:想要更好的利用協(xié)同工作,學(xué)會創(chuàng)建自己的包是一項必不可少的技能。編輯項目的或,增加一項配置,例如以上配置使用中國全量鏡像網(wǎng)站作為默認(rèn)中央倉庫。創(chuàng)建自己的包創(chuàng)建一個包只需兩步填寫包描述信息寫代碼。通過簡單兩步,我們創(chuàng)建的自己的包。 轉(zhuǎn)載請注明文章出處:https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請求 cookie web響應(yīng) ...
摘要:開源的論壇網(wǎng)站開源的論壇源代碼接口管理接口環(huán)境下環(huán)境一鍵安裝軟件二前端資源中國淘寶鏡像在國內(nèi),由于墻的原因,安裝包速度很慢,所以,這里建議使用淘寶提供的鏡像安裝前端資源。 為者常成,行者常至。 一、PHP資料 1、V2EX way to explore 分享和探索的地方2、Laravel China 中國最大的 Laravel 和 PHP 開發(fā)者社區(qū)3、Composer使用方法4、Pa...
摘要:開源的論壇網(wǎng)站開源的論壇源代碼接口管理接口環(huán)境下環(huán)境一鍵安裝軟件二前端資源中國淘寶鏡像在國內(nèi),由于墻的原因,安裝包速度很慢,所以,這里建議使用淘寶提供的鏡像安裝前端資源。 為者常成,行者常至。 一、PHP資料 1、V2EX way to explore 分享和探索的地方2、Laravel China 中國最大的 Laravel 和 PHP 開發(fā)者社區(qū)3、Composer使用方法4、Pa...
閱讀 2782·2023-04-25 14:41
閱讀 2375·2021-11-23 09:51
閱讀 3674·2021-11-17 17:08
閱讀 1667·2021-10-18 13:31
閱讀 5528·2021-09-22 15:27
閱讀 910·2019-08-30 15:54
閱讀 2222·2019-08-30 13:16
閱讀 728·2019-08-29 17:04