Composer는 PHP용 종속성 관리 도구로, 하나의 명령을 사용하여 다른 우수한 코드를 프로젝트에 쉽게 참조할 수 있습니다. 아래 composer 사용법 튜토리얼 칼럼에서 Composer의 기본 사용법을 설명하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
기본 사용법
소개
기본 사용법을 소개하며, 예시로 모노로그/모노로그 로그 라이브러리를 설치하겠습니다.
참고: 단순화를 위해 Composer가 로컬에 설치되어 있다고 가정합니다.
composer.json: 프로젝트 설정
프로젝트에서 Composer를 사용하려면 작곡가.json 파일이 필요합니다. 이 파일은 프로젝트 종속성과 기타 메타데이터를 설명합니다.
require key
가장 먼저(그리고 일반적으로 유일한) 해야 할 일은 작곡가.json 파일에 require 키를 정의하는 것입니다. 프로젝트가 어떤 패키지에 의존하는지 Composer에게 간략하게 알려주어야 합니다.
{ "require": { "monolog/monolog": "1.0.*" } }
위에 표시된 대로 require는 버전 제약 조건(예: 1.0.*)에 매핑된 패키지 이름(예: monolog/monolog)이 있는 json 개체를 얻습니다.
Composer는 이 정보를 사용하여 Composer.json에 등록한 리포지토리 키 또는 Packagist의 기본 패키지 리포지토리로 지정된 버전 리포지토리의 관련 적절한 파일을 "리포지토리"에서 검색합니다. 위 예시에서는 작곡가.json 파일에 등록된 다른 리포지토리 정보가 없으므로 기본적으로 monolog/monolog 패키지가 Packagist에 있다고 가정합니다. (자세한 Packagist 정보는 아래를 참조하거나 여기에서 자세히 읽어보세요.
패키지 이름
패키지 이름은 공급업체 이름과 프로젝트 이름으로 구성됩니다. 일반적으로 이러한 이름은 동일하며 공급업체 이름은 이름 충돌을 해결하기 위해 존재합니다. 예를 들어 , 이를 통해 서로 다른 두 사람이 igorw/json 및 seldaek/json과 동일한 이름을 가진 라이브러리를 생성할 수 있습니다.
여기에서 게시에 대한 자세한 내용을 확인할 수 있습니다.
"플랫폼 패키지"를 지정할 수도 있습니다. 종속성으로, 특정 버전의 서버 소프트웨어를 사용자 정의할 수 있습니다.
패키지 버전 제약 조건
위의 예에서 우리가 소개한 모노로그 버전은 1.0.*으로 지정됩니다. 즉, 1.0부터 시작하는 모든 개발 브랜치는 1.0 이상 1.1 미만 버전 일치
버전에 대한 자세한 정보, 서로 관련되는 방법 또는 버전 지정 방법을 읽어보세요.
Composer는 올바른 파일을 어떻게 다운로드합니까? Composer.json에 종속성을 추가하면 Composer는 먼저 요청한 패키지 이름을 가져오고 해당 키로 등록된 저장소에서 검색합니다. 추가로 등록된 저장소가 없거나 찾을 수 없습니다. 지정한 저장소에 해당 이름을 가진 패키지가 있으면 Packagist로 대체됩니다(자세한 내용은 아래 참조).
Composer가 패키저 또는 지정된 패키지의 저장소에서 올바른 패키지를 찾으면 패키지 VCS의 버전 관리 속성( 즉, 브랜치 및 태그)를 사용하여 지정한 버전 제약 조건에 가장 적합한 항목을 찾으려고 합니다. 버전 및 패키지 선언에 대한 기사를 꼭 읽어보세요.
참고: 패키지를 가져오려고 할 때 Composer에서 패키지 안정성에 대한 오류가 발생하는 경우 지정한 버전이 기본 최소 안정성 요구 사항을 충족하지 못할 수 있습니다. 이 경우 VCS에서 유효한 패키지 버전을 검색할 때 안정적인 버전만 고려됩니다.
DEV, Alpha, Beta 또는 RC 버전도 얻으려면 읽어보세요.
종속성 설치
install 명령을 사용하여 프로젝트에 정의된 종속성을 설치하세요
php composer.phar install
이 명령을 실행하면 작곡가가 다음 중 하나에 설치합니다. 상황에 따라 다음 두 가지 방법이 있습니다
Non-composer.lock 설치
이전에 명령을 실행한 적이 없는 경우 Composer.lock 파일은 작곡가에 나열된 종속성만 구문 분석합니다. json 파일을 다운로드하고 최신 버전을 프로젝트 공급업체 디렉터리에 다운로드합니다(공급업체는 모든 타사 코드가 저장되는 프로젝트의 일반 디렉터리입니다). 위의 예에서는 모든 Monolog 소스 파일이 Vendor/monolog/monolog/ 디렉터리에 있게 됩니다. Monolog에 종속성이 있으면 Vendor/에도 표시됩니다.
팁: 프로젝트에서 git을 사용하는 경우 .gitignore에 공급업체를 추가할 수 있습니다. 모든 타사 패키지를 저장소에 추가하는 것이 어리석은 것처럼 보이기 때문입니다.
Composer가 설치를 완료하면 다운로드한 모든 패키지와 정확한 버전 정보를 작곡가.lock 파일에 기록하여 프로젝트의 타사 패키지 버전을 잠급니다. 프로젝트의 모든 구성원이 동일한 버전의 종속성에 잠길 수 있도록 작곡가.lock을 프로젝트 저장소에 넣어야 합니다.
composer.lock 파일을 사용하여 설치
这里来到了第二种安装方式。如果你在运行 composer install 命令之前已经存在了 composer.lock 和 composer.json 文件, 这意味着你之前使用了 install 命令, 或者项目中的其他成员使用了 install 命令并将 composer.lock 文件提交至了项目中 (这是非常好的)。
无论使用哪种方式,存在 composer.lock 文件时使用 install 命令安装依赖时 composer.lock 都会解析并安装你在 composer.json 中所列出来的依赖,但是 Composer 会严格使用 composer.lock 文件列出来的版本来确保项目中的所有成员所安装的版本都是一致的。因此,你可以获得 composer.json 文件列出的所有文件,但是与此同时他们可能并不是最新的可用版本 (一些在 composer.lock 文件中列出的依赖可能会在这个文件创建之后释放了新的版本)。这个是设计上的,这样的设计可以确保你的项目不会因为一些依赖的改变而崩溃。
提交你的 composer.lock 文件至版本控制工具
将此文件提交至 VC 是非常重要的。因为它可以确保项目中的任何人使用的都是与你是完全一致的依赖。 你的 CI 服务器,生产服务器,团队的其他开发人员,所有人都使用的是相同的依赖项,这减轻了仅部署某些部分而引起错误的可能性。即使你独立开发,在你重新安装项目的 6 个月内,你的依赖项发布了许多新的版本,你依然可以确信你的依赖项是可用的。(请参阅下边有关使用 update 的命令。)
更新依赖到最新版本
如上所述,composer.lock 文件将阻止你自动获取最新依赖版本。如果要更新依赖到最新版本,使用 update 命令。这将获取最新匹配的版本(根据你的 composer.json 文件)并将新版本更新到 composer.lock 文件。(这相当于删除 composer.lock 文件并再次运行 install)。
php composer.phar update
注意:当执行 install 命令时,由于 composer.json 的更改可能影响到依赖解析而未更新 composer.lock ,Composer 将显示警告。
如果只是想安装或更新一个依赖,可以将它们列出来:
php composer.phar update monolog/monolog [...]
注意:对于库来说,没必要提交 composer.lock 文件,请参考:库 - 锁文件。
Packagist
Packagist 是 Composer 的主要资源库。一个 Composer 库基本上是一个包的源:一个你可以得到包的地方。
Packagist 的目标是成为一个任何人都可以使用的中央仓库。这意味着你可以 require 那里的任何包,无需指定 Composer 查找包的位置。
当你访问 Packagist 网站 (packagist.org),你可以浏览和搜索包。
建议使用 Composer 的开源项目在 Packagist 上发布包。虽然并不一定需要发布在 Packagist 上来被 Composer 使用,但是它能被其它的开发者更快的发现和采用。
平台包
Composer 将那些已经安装在系统上,但并不是由 Composer 安装的包视为虚拟的平台包。这包括 PHP 本身、PHP 扩展和一些系统库。
php 代表使用的 PHP 版本要求,允许你应用限制,例如 ^7.1 。如果需要 64 位版本的 PHP, 你可以使用 php-64bit 进行限制。
hhvm 代表 HHVM 运行环境的版本,并且允许你应用限制 ,例如,^2.3。
ext- 允许你依赖 PHP 扩展(包括核心扩展)。通常 PHP 拓展的版本可以是不一致的,将它们的版本约束为 * 是一个不错的主意。一个 PHP 扩展包的例子是:ext-gd。
lib- 允许对 PHP 库的版本进行限制。以下可用例子: curl, iconv, icu,libxml,openssl, pcre, uuid, xsl。
你可以使用命令 show --platform 去获取你本地可用的平台包。
自动加载
为了描述包的自动加载信息, Composer 会生成一个 vendor/autoload.php 文件,你可以简单的 include 这个文件,并在无需其它额外工作的情况下就可以使用这些包所提供的类:
require __DIR__ . '/vendor/autoload.php'; $log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo');
你甚至可以在 composer.json 中添加一个 autoload 指令,来添加自己的自动加载声明
{ "autoload": { "psr-4": {"Acme\\": "src/"} } }
Composer 会为 Acme 命名空间注册一个 PSR-4 的自动加载.
你定义一个命名空间指向目录的映射。 在 vendor 目录同级的 src 目录将成为你项目的根目录。一个案例,文件名 src/Foo.php 需包含 AcmeFoo 类。
添加 autoload 指令之后,你必需重新运行 dump-autoload 来重新生成 vendor/autoload.php 文件。
包含此文件后也可以接收到一个 autoloader 实例,由因此您可以将 include 调用的返回值存储在变量中并添加更多名称空间,这在测试套件中将会很有用,例如:
$loader = require DIR . '/vendor/autoload.php'; $loader->addPsr4('Acme\Test\', __DIR__);
作为 PSR-4 自动加载规范的补充,Composer 也支持 PSR-0、类表、文件清单的自动加载方式。具体请查询 autoload 引用。
你也可以查阅 optimizing the autoloader 了解关于自动加载器的优化.
注意:
Composer 提供自己的加载器,但如果你不想使用那个而想自己配置加载器的话,你可以试试 include vendor/composer/autoload_*.php 这些文件所返回的关联数组来实现。
위 내용은 Composer 사용법 튜토리얼(기본 사용법)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!