正文
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击
协同翻译介绍
。
在这篇文章中,我们将讨论Composer的一些的基础知识, 以及是什么使它成为一个如此强大而有力的工具。
在详细讨论之前,我们需要知道两件事:
正如我们在他们的
网站
上看到的那样:
"Composer 是PHP依赖管理的工具. 它允许你声明你的项目所依赖的库并且它将为你管理(安装/更新) 它们."
Composer 不是包管理器. 它用"per project" 这种方式处理包.虽然它提供了一种全局安装选项 ,但默认情况下它不会在全局安装任何东西。
基本上, Composer 允许你声明和管理PHP项目中的每个依赖项.
现在就开始安装Composer ,这样我们就可以看到它了.
人来人往 翻译于 1个月前
0
重译
安装
安装 Composer 有两种方式:本地和全局。因为 Composer 是一个非常有用和广泛使用的工具,所以我总是建议在全局范围内安装它,因为您可能会同时在多个项目中使用它。
请注意,如果您使用
Homestead Improved
等环境,则默认情况下会全局安装。如果你对
Vagrant
和
Homestead
不熟悉,
这篇文章
会帮你解决,如果你想深入研究下去,请看这本
this book will reveal some wild mysteries to you
。 要安装Composer,请按照
说明
获取您的操作系统。
如果你使用的是
Unix
系统,安装后你可以运行命令:
mv composer.phar/usr/local/bin/composer
这将
composer.phar
文件移动到路径上的一个目录(缺省情况下操作系统查找可执行文件的文件系统的位置)。这样,你可以使用
composer
命令而不是
composer.phar
。
monkey 翻译于 1个月前
0
重译
运行
composer
命令将会展示以下页面信息:
![file]()
一些有用的
composer
命令:
-
composer help <command>
-- 显示给定命令的帮助页面.
-
composer self update
-- 更新到最新的可用版本.
-
composer search
-- 搜索依赖包.
-
composer status
--显示一组本地被更新的依赖. 如果从源代码中安装一些 东西(用
--prefer-source
选择项), 最终我们将会在
/vendor
文件夹克隆该包. 如果我们修改了包信息,
composer status
命令将会使用
git
展示这些修改.
-
composer diagnose
-- 诊断系统的常见错误. 这对于调试非常有用, 因为它检查一些例如连接到包、可用磁盘空间和
git
的设置等.
我们将注意力集中在
composer init
,
composer create-project
和
composer require
.
sane 翻译于 1个月前
0
重译
使用 Composer
在项目中管理依赖项, Composer 使用
json
格式文件. 这个文件描述了所有的依赖项, 并且也可以很好的存储一些元数据。 在这个例子中我们将会创建一个新的 PHP 项目并且使用
PHPUnit
用来做单元测试。 有下面的几种方法去使用 Composer 管理这些依赖。
{
"require": {
"phpunit/phpunit": "^4.8"
}
}
-
require
键包含这些包名 (例如
phpunit/phpunit
) 和约束版本号 (例如
4.8
) 的包对象信息。 Composer 使用这些信息去你使用
repositories
键注册的 "包仓库 (repositories) " 中搜索正确的包 (更多信息请看
here
)
或
Packagist
, 默认的包仓库我们在后面讨论。
M1racle 翻译于 1个月前
0
重译
查看其他 1 个版本
如果你使用
composer init
亦或者手动创建初始文件,你都需要执行
composer install
命令。这将下载
composer.json
文件中所有存在依赖关系的包。 请注意手动在
composer.json
中添加包并执行
composer install
与直接执行
composer require <package>
相同。
使用
composer require <package>
这种方法是推荐的
最佳实践
.
首次运行
composer install
命令时会下载与依赖关系相关的包,并将其安装的版本注册到
composer.lock
文件中。 下次有人在此项目执行
composer install
, 它将不会去获取最新的可用包版本,而是通过寻找
composer.lock
中已经注册的版本进行安装。 通过这种方式, Composer可以确保您的项目不会因新版本软件包中意想不到的代码变更而报错。
canyuexiang 翻译于 1个月前
0
重译
更新你的软件包
composer.lock
文件通过不允许下载新版本的软件包来确保项目中的每个人都使用相同版本的软件包。 如果因为某种原因我们想要坚持使用一个特定的版本,那么我们应该在,
composer.json
文件中添加你所需要的版本. 例如:
{
"require": {
"phpunit/phpunit": "4.8"
}
}
但是,如果我们想要更新依赖包到最新的版本呢?
为了更新依赖,Composer提供了
composer update
命令。这个命令不仅会下载依赖包的最新版本,还会将
composer.lock
文件更新到最新的版本。运行
composer update
这个命令相当于删除
composer.lock
文件,然后重新运行
composer install
这个命令。
通常建议
composer.lock
文件在处理项目(应用程序)时将文件提交到版本控制系统,并且在处理程序包的时候忽略它。一个包应该总是努力使用最新版本的依赖,但是一个应用通常来说更为脆弱。关于这个和其他方法的讨论
在这里
.
zssen 翻译于 1个月前
0
重译
第三方插件文件夹
Composer 将所有依赖项下载到
/vendor
文件夹中, 如果该文件夹不存在. 它也创建了一个如下所示的
vendor/autoload.php
的文件:
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit7a731d2067108a4739c3dd65be722f17::getLoader();
一旦你
include
或者
require
到你的文件的代码中, 你可以使用依赖包中所提供的所有功能。这与将下面的代码片段添加到你的代码中一样简单:
require __DIR__ . '/vendor/autoload.php';
zssen 翻译于 1个月前
0
重译
自动加载
Composer 提供的自动加载对于访问项目的依赖是非常有用的,也可以访问我们自己应用程序的代码。为此,我们需要注册我们的代码在
composer.json
文件中 ,使用这个
autoload
这个键
{
"autoload": {
"psr-4": {"Foo\\": "src/"}
}
}
First, Composer 将注册一个
PSR-4 自动加载对象
对于
Foo
命名空间。 Then, 我们映射这个
Foo
命名空间到
/src
文件夹。这个
/src
文件夹应该位于与
/vendor
文件夹的同一级(项目的根目录)。After
this,我们需要重新生成
vendor/autoload.php
这个文件, Composer 提供了一个命令
composer dump-autoload
。
-
小提示:
composer du
也能用, 因为 Composer 运行任何命令 ,确定的都是前几个字母,Composer 命名空间中没有 其他以
du
开头的命令,所以 Composer 知道那一个是我们想要的,这适合与所有的 Composer 命令。
这个方法我们将自己的代码添加到自动加载对象中,除了 PSR-4 自动加载, Composer也支持PSR-0,类映射和文件自动加载 。查看这个
文档
获取更多的信息关于Composer 的自动加载
岳池 翻译于 1个月前
0
重译
配置项 Minimum Stability(最低稳定性)
有时,你的项目将依赖一个没有稳定版本的包。Composer 默认会阻止不稳定的包被安装
在这种情况下,它是容易的去增加
minimum-stability
标签在
composer.json
文件中,然后 Composer 将会允许 不稳定包的安装
composer config minimum-stability dev
几乎所有的配置项都可以被编辑通过命令行,如
此文
所示。
岳池 翻译于 1个月前
0
重译
全局 Packages
一些包能够派上用场如果以全局的方安装。例如,
Spress
和
Laravel
有命令行工具来生成新的项目,
重新运行一些常见的命令。还有,一个测试工具,像
PHPUnit
可以从系统中的任何一个位置运行,并使得项目的测试更加轻松。 通常情况下,Packages 能够被全局安装通过这个
global
选项,
像这样:
composer global require phpunit/phpunit
我们大体上发现当遵循专业和现代的方法在
开发在一个独立的环境
中时,
global require
是100%安全的。
岳池 翻译于 1个月前
0
重译
Packagist
Packagist
是一个 Composer 主要的仓库。 这是所有 Compose包被聚在一起的地方,这便意味这当我们执行
composer search <package>
这个命令时,我们搜索的实际上是 Packagist。这个 Packagist 网站也提供所有软件包的信息和搜索排序引擎。这样 PHP 开发者就不用花费几天的时间去 Github 上寻找包了。
Packagisr 不仅仅汇集了所有的PHP包,它也鼓励 PHP 开发者提交他们自己的包在上面,不断的壮大这个社区。