搜尋
首頁開發工具composer關於composer.json的配置設置

下面由composer教程欄位給大家關於composer.json的配置設置,希望對需要的朋友有所幫助!

關於composer.json的配置設置

設定檔的值為key:val 必須雙引號包裹

一、設定檔

名字name
套件名稱由使用者名稱名稱和倉庫名稱組成
套件版本限制來請求Monolog軟體包1.0 .*。這表示1.0開發分支中的任何版本,或大於或等於1.0且小於1.1(>=1.0 本。

描述 description
簡短描述包裝。通常這只是一行長。

套件的版本 version
如果軟體包儲存庫可以從某處推斷版本,例如VCS儲存庫中的VCS標記名稱,則可選。在這種情況下,建議省略它。

類型type
建議省略此字段,並將其預設為library

關鍵字keywords
這些可用於搜尋和過濾,陣列形式例如keywords: ["xunsearch", "search engine", "yii", "yii2"]

主頁homepage
專案網站的網址。

時間 time
版本發佈日期,必須在YYYY-MM-DD或YYYY-MM-DD HH:MM:SS格式。

許可證 license
對於一個套件,當許可證之間有一個選擇(「分離許可證」)時,可以將多個指定為陣列。
分離許可證範例:

{
      "license": [
           "LGPL-2.1",
           "GPL-3.0+"
      ]
}

或者,它們可以用「或」分隔並括在括號中;

{
      "license": "(LGPL-2.1 or GPL-3.0+)"
}

作者authors

#
每个作者对象可以具有以下属性:
名称:作者姓名 通常他们的真名。 name 
电子邮件:作者的电子邮件地址。 email
主页:作者网站的网址。      homepage
作用:作者在项目中的作用(如开发者或翻译者) role
"authors": [
          {
                "name": "Nils Adermann",
                "email": "naderman@naderman.de",
                "homepage": "http://www.naderman.de",
                "role": "Developer"
          },
          {
                "name": "Jordi Boggiano",
                "email": "j.boggiano@seld.be",
                "homepage": "http://seld.be",
                "role": "Developer"
          }
    ]

支持support
各種資訊獲得專案支持,支援資訊包括以下內容:

電子郵件:電子郵件地址支援。 email
問題:問題追蹤器的URL。 issues
論壇:論壇的 URL。 forum:
wiki:維基的 URL。 wiki
irc: IRC通道支持,如irc:// server / channel。 irc:
來源:瀏覽或下載來源的 URL。 source
docs:文件的 URL。 docs
rss: RSS提要的URL。 rss
一個例子:

{
      "support": {
            "email": "support@example.org",
            "irc": "irc://irc.freenode.org/composer"
      }
}

建議suggest

"suggest": {
          "monolog/monolog": "Allows more advanced logging of the application flow",
          "ext-xml": "Needed to support XML format in class Foo"
    }

archive 歸檔

此指令用來對指定套件的指定版本進行zip/tar 歸檔。它也可以用來歸檔你的整個項目,不包括 excluded/ignored(排除/忽略)的檔案。

composer 命令:php composer.phar archive vendor/package 2.0.21 --format=zip

exclude:允許設定排除路徑的模式清單。模式語法匹配.gitignore檔案。領先的感嘆號(!)將導致任何匹配的文件被包括,即使 
以前的模式排除它們。領先的斜杠只能在專案相對路徑的開始處匹配。星號不會擴展到目錄分隔符號。

設定建立套件時的選項,exclude 屬性可以設定排除哪些目錄,例如:

"archive": {
  "exclude": ["/foo/bar", "baz", "/*.test", "!/foo/bar/baz"]
}

bin檔案
#一組應該被視為二進位檔案並符號連結到bin-dir (從config)的檔案。
bin 檔案相對於倉庫套件的目錄位址
"bin": [
    "util/xs"
  ]

##2、依賴管理
軟體包連結require
require告訴composer你的專案所依賴的套件

"require": {
  "php" : "^5.5 || ^7.0",
  "monolog/monolog": "1.0.*"
}

require需要將套件名稱(例如monolog/monolog )映射到版本約束(例如1.0.*)的物件。
composer show --platform指令列出了系統上可用的所有PHP擴充
限制PHP版本[ php 版本要求]

"require": {
      "swiftmailer/swiftmailer": 5.3.*@dev,
      "phpoffice/phpexcel": "dev-master"
}

以swiftmailer為例,swiftmailer/swiftmailer 代表的是套件名稱,5.3.@dev , 是版本資訊。合起來的意思是說,我們將要開發的
應用,依賴swiftmailer的5.3.版本。其中:

5.3.*表示,可以使用5.3.1版本,也可以使用5.3.2版本,composer在取得的時候,將尋找5.3版本下最新的版本。版本號碼支援一些更
加寬泛的約束,例如>=1.0, >=1.0, require-Key

@dev表示可以取得開發版本。通常,開發版本意味非穩定版本,很可能有bug。穩定性標籤可以作用於特定的依賴項,也可以作用
於全域。

作用特定依赖项:默认情况下,composer只会获取稳定版本,如果这个例子我们不加@dev约束,而5.3.*版本都是开发版本,那么在
获取的时候composer就会报错,指出改版本不符合要求。如果确定这个开发版本没有问题,那么就可以通过加@dev ,让Composer获
取这个开发版本。

全局稳定性设置:通过设置minimum-stability的值,来告诉Composer当前开发的项目的依赖要求的包的全局稳定性级别,它的值包
括:dev、alpha、beta、RC、stable,stable是默认值。例如:"minimum-stability": "stable"

require-dev

有时候,我们会发现,有些包依赖只会在开发过程中使用,正式发布的程序不需要这些包,这个时候,就需要用到另外一个键,即
require-dev。例如,我们想用codeception进行单元测试,那么就可以通过require-dev引入这个开发环境下的依赖包:

"require-dev": {
      "codeception/codeception": "2.0.0 "
}

加了这个依赖后,再运行下命令看看效果。
composer install

三、自动加载
自动加载lib目录下的OrderManager.php文件
1.使用Files方式(ps:通常作为函数库的载入方式(而非类库))

"autoload":{
      "files":["lib/OrderManager.php"]
}

files键对应的值是一个数组,数组元素是文件的路径,路径是相对于应用的根目录。加上上述内容后,运行命令:

composer dump-autoload

让composer重建自动加载的信息,完成之后,就可以在index.php里调用OrderManager类啦。

2.Classmap方式自动加载

通过文件引入的方法虽然直观,但是很费劲,每个文件都得引入一次,实在不是好的解决办法。有没有更好的办法呢?尝试将
autoload的值改成:

"autoload": {
          "classmap": ["src/", "lib/", "Something.php"]
    }

再此运行composer dump-autoload,尝试调用,依然能够成功创建OrderManager类。其实,classmap通过建立类到文件的对应关系,
当程序需要OrderManager类时,compoer的自动加载类通过查找OrderManager类所在的文件,然后再将改文件include进来。因此,这
又导致了一个问题,那就是每加一个新类,就需要运行一次composer dump-autoload来创建类到文件到对应关系。

从classmap中排除文件
如果要从类映射中排除某些文件或文件夹,可以使用“from-classmap”属性,这些类将从类映射中跳过

"autoload": {
          "exclude-from-classmap": ["/Tests/", "/test/", "/tests/"]
    }

3. PSR0/4加载方式
PSR-0,PSR-4,类文件都要求有个命名空间

PSR-0则规定类名中的下划线_会被转化成目录分隔符

namespace SilkLib;
class OrderManager
{
      public function test()
      {
            echo "hello";
      }
 }

同时,文件夹的结构也要修改成:应用根目录\lib\SilkLib\OrderManager.php
然后修改composer.json里的autoload部分如下:

"autoload":{
      "psr-0":{
            "SilkLib":"lib/"
      }
}

这里需要注意的是,SlikLib是命名空间,lib是目录名,他们的组合告诉composer,文件搜索是在:lib/SilkLib/ 目录下,而不是
在 SilkLib/lib 目录下,这一点要特别注意,有点绕,容易弄错。

如果我们把命名空间改成 Slik\lib, 相应的目录结构要改成:应用根目录\lib\Silk\lib\OrderManager.php,autoload部分的写法
相应的也要改成:

"autoload":{
      "psr-0":{
    "Monolog\\": "src/",
            "Silk\\lib":"lib/"
      }
}

如果您需要在多个目录中搜索相同的前缀,则可以将它们指定为数组:

   "autoload": {
          "psr-0": { "Monolog\\": ["src/", "lib/"] }
    }

注意Silk\lib是双斜杆。好了,那我们试试再加一个类,然后不用运行composer dump-autoload命令,看看新类是否能加载上。在
lib目录下,新增一个ShipManager.php文件,内容如下:

namespace Silk\lib;
class ShipManager
{
      public function test()
      {
            echo 'hello ship class';
      }
}

尝试在vendor 同级目录下的index.php文件中调用:

$orderMgr = new Silk\lib\OrderManager();
$orderMgr->test();
$shipMgr = new Silk\lib\ShipManager();
$shipMgr->test();

运行成功,说明使用psr-0规范进行自动加载,比classmap更加方便。

可以直接指定到类级别。这对于在全局命名空间中只有一个类的库很有用,
php源文件也位于包的根目录中,则可以如下声明:

{
      "autoload": {
            "psr-0": { "UniqueGlobalClass": "" }
      }
}

如果您想要有一个可以使用命名空间的备用目录,则可以使用空的前缀,如:

{
    "autoload": {
          "psr-0": { "": "src/" }
      }
}

在psr-4关键字下,您可以定义相对于包根的命名空间到路径的映射

下面试试psr-4方式,整理下目录结构,改成:应用根目录\lib\OrderManager.php,类文件修改命名空间为Silk[包根目录文件夹名/
包里文件夹名称],
修改autoload

"autoload":{      "psr-4":
  {            "Silk\\":"lib",  // Silk 代表着--->项目类文件中的命令空间,将Silk 命名空间绑定到  /用户名/仓库名/lib 目录下                             // 文件夹路径:  
      vedor/
        用户名/
          仓库名称/
            composer.json
            lib/  
              Classname.php  lib这文件夹下的类文件 ----> 类名要和类文件同名, 类文件的命名空间统一为  Silk
    "Monolog\\": "src/",      }}//调用是  先引入vendor/autoload.php

使用命名空间:
use   \Silk\类名---->等同于  使用包里的 lib\类文件---->类名

再次运行composer dump-autoload

如果您需要在多个目录中搜索相同的前缀,则可以将它们指定为数组:

"autoload": {
          "psr-4": { "Monolog\\": ["src/", "lib/"] }
  }

如果您想要有一个可以在任何命名空间中查找的备用目录,您可以使用一个空的前缀,如:

  "autoload": {
          "psr-4": { ""exclude" }
  }

以上是關於composer.json的配置設置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除
composer中心線怎麼添加步驟composer中心線怎麼添加步驟Mar 06, 2025 pm 01:45 PM

本文詳細介紹瞭如何在QGIS作曲家中創建中心線。 它缺乏專用工具;用戶使用線路工具手動繪製線路,並使用手柄和作曲家工具精確定位它。 然後可以自定義樣式選項

catia composer是什麼軟件catia composer是什麼軟件Mar 06, 2025 pm 01:53 PM

Catia Composer是3D可視化軟件,從CAD數據創建交互式文檔。 它通過啟用交互式手冊,演示文稿和培訓材料來改善溝通,減少上市時間並降低成本。 它的主要優勢

composer的意思是什麼composer的意思是什麼Mar 06, 2025 pm 01:54 PM

本文解釋了PHP依賴性經理作曲家。 它詳細介紹了其功能(依賴關係管理,自動加載,版本控制),好處(簡化開發,一致性提高)和用例(Web應用程序,庫,API)。 作曲家我們

sw2016怎麼啟動Composer啊 sw2016啟動Composer詳細教程sw2016怎麼啟動Composer啊 sw2016啟動Composer詳細教程Mar 06, 2025 pm 01:47 PM

本指南詳細介紹瞭如何啟動SolidWorks Composer 2016,主要是通過SolidWorks Start菜單或Windows Start菜單。 還提供了安裝和啟動問題的故障排除步驟。

composer的作用是什麼composer的作用是什麼Mar 06, 2025 pm 01:55 PM

本文解釋了PHP的依賴性經理作曲家。 它詳細介紹了Composer如何使用Composer.json來安裝,更新和管理Packagist的項目依賴性,從而確保跨環境的一致庫版本。 作曲家的框架 -

sw composer怎麼在一個裝配體上貼圖教程sw composer怎麼在一個裝配體上貼圖教程Mar 06, 2025 pm 01:49 PM

本指南的詳細信息在Solidworks作曲家組件中應用貼花。 它涵蓋將貼花貼在單個零件上,並在多個零件上繪製單個圖像,以解決兼容文件格式(JPG,PNG,BMP,TIFF)和透明度限制。

composer怎麼指定安裝某一個庫教程composer怎麼指定安裝某一個庫教程Mar 06, 2025 pm 01:51 PM

本教程說明瞭如何使用作曲家安裝單個PHP庫。 它詳細介紹了作曲家需要命令,包括版本規範,並解決了安裝庫的局限性而無需其依賴關係,建議

sw插件composer怎麼做動畫教程sw插件composer怎麼做動畫教程Mar 06, 2025 pm 01:50 PM

本文使用未指定的“ SW插件作曲家”提供了動畫創建的一般指南。 它詳細介紹了關鍵步驟:項目設置,資產導入,時間軸操作,密鑰幀,培根,效果和渲染。 而軟件

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中