国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - PHP創(chuàng)建自己的Composer包方法

PHP創(chuàng)建自己的Composer包方法

2019-10-13 14:30tlanyan PHP教程

這篇文章主要介紹了PHP創(chuàng)建自己的Composer包方法

倉庫(Repository)

倉庫是軟件開發(fā)中常見的概念,與源(sources)意義相近,主要指托管資源的場所。許多軟件都有倉庫的概念,例如yum、npm、maven、Git,以及本文的主角Composer。倉庫以中心化的方式托管資源,為軟件的正常工作提供保障。

Packagist 是Composer默認的中央倉庫,PHP社區(qū)的絕大部分Composer包都托管在該網(wǎng)站上。Packagist提供公開的、免費的托管服務(wù),任何人均可注冊、自由發(fā)布包,無需審核。Packagist由Private Packagist提供托管和維護,兩者的主要區(qū)別為:Packagist的官網(wǎng)是https://packagist.org,托管...,托管的代碼無需開源,倉庫服務(wù)器可位于內(nèi)網(wǎng),提供更快、更高效的包代碼托管服務(wù)。

可以配置多個倉庫,Composer會自動找出最適合項目的依賴包。搜索包的流程如下:首先檢查當前項目是否配置額外倉庫,有則優(yōu)先在額外倉庫中檢索;無結(jié)果向上到全局配置中的額外倉庫檢索;未配置或搜索無結(jié)果的情況下,回退到默認的Packagist中央倉庫檢索。除非禁用了默認的倉庫,Packagist中的包總會被檢索到。因為這個原因,Composer推薦PHP開發(fā)人員將包托管在Packagist網(wǎng)站上,方便他人檢索和引用。

配置倉庫

有兩種方法對Composer的倉庫進行配置:命令行和編輯配置文件。composer config是Composer配置的命令,可以用來配置項目或全局的倉庫信息,例如:

composer config [-g] repo.packagist composer https://packagist.phpcomposer.com

第二種方法是編輯配置文件。編輯項目的composer.json或~/.config/composer/config.json,增加repositories一項配置,例如:

"repositories": {
  "packagist": {
    "type": "composer",
    "url": "https://packagist.phpcomposer.com"
  }
}

以上配置使用 Packagist中國全量鏡像 網(wǎng)站作為默認中央倉庫。在大陸地區(qū)部署PHP項目,建議使用該倉庫目錄,能加速依賴包的下載。

倉庫配置最重要的兩個參數(shù)是type和url。type指明倉庫的類型,url則指向具體網(wǎng)址。根據(jù)倉庫的位置,常用的type可選值有:

  1. composer,Composer包托管倉庫,例如 Packagist中國全量鏡像;

  2. vcs,版本控制管理系統(tǒng),例如Github上的項目地址;

  3. pear,PEAR上的包;

  4. package,位于互聯(lián)網(wǎng)上包;

  5. artifact,代碼zip包合集;

  6. path,指向代碼具體位置。

互聯(lián)網(wǎng)上的倉庫,type的常見值是composer和vcs;本地的項目,常見值是artifact和path。具體用例,可參考Composer官方文檔。

掌握了倉庫的概念和其配置,接下來我們創(chuàng)建自己的包。

創(chuàng)建自己的Composer包

創(chuàng)建一個Composer包只需兩步:1. 填寫包描述信息;2. 寫代碼。本文創(chuàng)建一個hello-composer的包來演示創(chuàng)建過程。該包功能只有一個:輸出字符串“Hello, Composer!”。

Composer包的描述信息存放在composer.json文件中,可直接新建(或從其他項目拷貝)composer.json文件,手動填充必要的字段信息;也可以用composer init命令,交互式的輸入包信息,生成composer.json文件后再補全其他字段信息。我們采取直接編輯文件的方式,在composer.json中輸入如下內(nèi)容:

{
  "name": "tlanyan/hello-composer",
  "description": "Hello, Composer!",
  "type": "library",
  "require": {
    "php": ">=7.0"
  },
  "license": "MIT",
  "authors": [
    {
      "name": "tlanyan",
      "email": "tlanyan@hotmail.com"
    }
  ],
  "minimum-stability": "stable",
  "autoload": {
    "psr-4": {
      "tlanyan\\": "src/"
    }
  }
}

以上內(nèi)容基本上是一個Composer包的必備字段。其他字段可參考Composer官網(wǎng)的composer.json說明。需注意標記為root-only的字段,root-only表示當前包為主項目時才生效。例如require-dev字段,在當前項目中開發(fā),字段內(nèi)的包會下載放到vendor文件夾內(nèi);如果該項目被其他項目引用,則該字段的值被忽略,引用的包不會被下載。

接下來編寫代碼。在src目錄下新建HelloComposer.php:

namespace tlanyan;

class HelloComposer
{
  public static function greet()
  {
    echo "Hello, Composer!", PHP_EOL;
  }
}

代碼風格建議參考PSR-2規(guī)范,文件命名和路徑規(guī)范建議參考PSR-4規(guī)范。另外需注意文件的路徑需與composer.json中autoload的值相匹配。

通過簡單兩步,我們創(chuàng)建的自己的Composer包。接下來在其他項目中引用該包。

引用Composer包

新建一個test項目,引用上文創(chuàng)建的包并查看效果,步驟如下:

1.新建test文件夾,拷貝或者新建composer.json文件,配置如下:

  {
    ....
    "require": {
      "tlanyan/hello-composer": "*"
    },
    "minimum-stability": "dev",
    "repositories": {
      "local": {
        "type": "path",
        "url": "/path/to/hello-composer"
      }
    },
    ....
  }

配置文件需要注意兩點: 1. 如果hello-composer的composer.json文件沒有version字段(或不是穩(wěn)定版),minimum-stability值要是dev(默認是stable),否則無法安裝; 2. 需添加自定義倉庫,type值為path。

2.執(zhí)行composer install -vvv安裝依賴包,安裝完成后vendor目錄下生成tlanyan/hello-composer目錄。

3.在test中新建Test.php文件,引用HelloComposer類:

  namespace test;
  
  require "vendor/autoload.php";
  
  use tlanyan\HelloComposer;
  
  class Test
  {
    public static main()
    {
      HelloComposer::greet();
    }
  }
  
  Test::main();

.執(zhí)行Test.php:php Test.php,輸出"Hello, Composer!"。

通過配置Composer倉庫,我們成功引用了創(chuàng)建的hello-composer包。測試沒問題后,就可以發(fā)布到網(wǎng)上供其他人使用。下面簡要說是發(fā)布流程。

發(fā)布Composer包

將Composer包發(fā)布到互聯(lián)網(wǎng)的方式有幾種:

  1. 打包成zip,上傳到任意一個可公開訪問的網(wǎng)站;

  2. 通過版本控制軟件,上傳到代碼倉庫;

  3. 提交到PEAR社區(qū);

  4. 提交到私有的Composer倉庫;

  5. 提交到Packagist。

前四種方式,需要用戶配置倉庫信息才能檢索到包(PEAR社區(qū)幾乎已死,可以忽略)。如果代碼開源,建議提交到Packagist,方便全世界的PHP開發(fā)者檢索和使用,為Composer生態(tài)做貢獻。

提交包到Packagist,要經(jīng)歷以下過程:

  1. 在Github創(chuàng)建項目并提交代碼;

  2. 在Packagist輸入項目地址提交包;

  3. 在Github配置項目,觸發(fā)Packagist自動更新。

前兩步是必須的,第三步可選。本著為提交的包負責的態(tài)度,強烈建議完成第三步操作。

提交包的過程涉及到Github和Packagist兩個站點,Github和Packagist之間的關(guān)系為:Github托管實際的代碼和文件;Packagist托管包的作者、包名、版本號、下載量等元數(shù)據(jù)保。簡要說Packagist是索引,Github是內(nèi)容提供方。

詳細步驟可參考官網(wǎng)指引或網(wǎng)上教程,網(wǎng)上相關(guān)內(nèi)容太多,本文不再重復(fù)。

總結(jié)

本文介紹了Composer倉庫的概念,創(chuàng)建了一個完整的Composer包,并給出提交包到Packagist的指引。用戶掌握相關(guān)概念和運行機制后,可提交代碼為社區(qū)做貢獻,也可跳出Packagist自由的引用和安裝依賴包。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人影院av | 亚洲乱码国产乱码精品精98午夜 | 国产精品一区二区三区免费 | 午夜日韩 | 国产精品久久久久久久久费观看 | 老黄网站在线观看 | 91av视频免费在线观看 | av在线官网 | 精品96久久久久久中文字幕无 | 日韩一区二区在线观看 | 欧美国产日韩一区 | 激情久久婷婷 | 日韩城人网站 | 91在线免费观看 | 欧美一级黄色片免费看 | 国产一区二区三区撒尿在线 | 国产精品美女久久久久高潮 | 欧美国产视频一区 | 视频一区 中文字幕 | 亚洲免费在线 | 毛片com| 能在线观看的黄色网址 | 亚洲成av人片在线观看香蕉 | 日韩精品免费在线视频 | 精品一区二区不卡 | 欧洲成人午夜免费大片 | 黑人巨大精品欧美黑白配亚洲 | 国产精品日韩欧美一区二区三区 | 欧美自拍一区 | t66y最新地址一地址二69 | 午夜网址 | 亚洲第1页 | 亚洲在线观看一区二区 | 欧美在线观看免费观看视频 | 性刺激久久久久久久久九色 | www.av在线.com | 日韩中文字幕一区 | 久热精品在线视频 | 久久久国产一区二区三区 | 成年人免费看 | 久久一区二区视频 |