概述
1、认识Composer
Composer是PHP的一个依赖管理工具,它通过申明项目中所依赖的代码库,来自动安装项目中所依赖的安装包或扩展类,类似于node’s中的npm和ruby’s中的bundler。
例如项目中需要使用monolog来做日志记录,可以新建一个composer.json文件,其中描述了项目的依赖关系:
{
"require": {
"monolog/monolog": "1.2.*"
}
}
- [提醒: ] 系统要求:php >= 5.3.2
2、Linux下安装
局部安装:
curl -sS https://getcomposer.org/installer | php
也可以通过php>下载安装器:
php -r "readfile('https://getcomposer.org/installer');" | php
这将检查一些php的设置,然后下载composer.phar到项目目录中。这是composer的二进制文件,这是一个phar包(php的归档),这个包可以帮助用户在命令行中执行一些操作。
也可以通过–install-dir选项指定composer的安装目录(可以是绝对或相对路径):
curl -sS https://getcomposer.org/installer | php -- --install-dir=bin
全局安装:
如果把composer.phar文件放在系统的path目录中,就可以全局访问它,在类unix系统中,甚至可以在使用时不加php前缀。
示例代码:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
这时只需要使用composer命令就可以使用composer,而不需要输入php composer.phar。
3、Windows下安装
使用安装程序:
下载并运行Composer-Setup.exe,设置好系统的环境变量,这样就可以在任何目录下直接使用Composer命令。
手动安装:
cmd窗口下运行下列命令:
C:Usersusername>cd C:bin
C:bin>php -r "readfile('https://getcomposer.org/installer');" | php
并设置环境变量。
- [注意 :] 若收到readfile错误提示,可以使用http链接,或者在php.ini中开启php_openssl.dll
在composer.phar同级目录下新建文件composer.bat:
C:bin>echo @php "%~dp0composer.phar" %*>composer.bat
关闭当前的命令行窗口,打开新的命令行窗口进行测试:
C:Usersusername>composer -V
Composer version 27d8904
4、使用Composer
在项目中创建一个composer.json文件,该文件包含了项目的依赖和其他的一些元数据。
{
"require": {
"monolog/monolog": "1.0.*"
}
}
require指明依赖关系,其key值为项目需求依赖的包,require需要一个包名称(例如:monolog/monolog)映射到包版本(例如:1.0.0)的对象。
包名称由供应商名称和其项目名称构成,通过容易产生相同的项目名称,但供应商名称的存在则很好地解决了命名冲突的问题,它允许两个不同的人创建同样名为json的库,而之后它们将被命名为a/json和b/json。
在上面引入了monolog/monolog,供应商名称与项目的名称相同,对于一个具有唯一名称的项目,推荐这么做。我们还可以在同一命名空间添加更多的相关项目,如果你维护着一个库,这将使你可以很容易地把它分离成更小的部分。
在上面我们引入的monolog版本指定为1.0.*,这表示任何从1.0开始的开发分支,它将会匹配1.0.0、1.0.1或者1.0.20。
版本约束:
安装依赖包:
使用composer.phar运行install命令
php composer.phar install
install命令将创建一个composer.lock文件到项目根目录中。
在安装依赖后,composer将把安装时确切的版本号列表写入composer.lock文件,这将锁定该项目的特定版本,在项目管理中,务必将composer.lock(包括composer.json)到版本库中
这么一来,项目在其他设备上安装时,install命令将会检查锁文件是否存在,如果存在,它将下载指定版本(忽略composer.json文件中的定义)。
这意味着任何人建立项目都将下载与指定版本完全相同的依赖,从而减少潜在的错误对部署的影响。
更新版本:
php composer.phar update
只安装或更新一个依赖,设置白名单:
php composer.phar update monolog/monolog [...]
自动加载:
对于库的自动加载信息,composer生成了一个vendor/autoload.php文件,可以简单地引入这个文件,获取自动加载支持。
require 'vendor/autoload.php';
这么一来,可以很容易地使用第三方代码,例如项目中依赖monolog,可以像下面这样开始使用这个类库,因为它们将被自动加载:
$log = new MonologLogger('name');
$log->pushHandler(new MonologHandlerStreamHandler('app.log', MonologLogger::WARNING));
$log->addWarning('Foo');
也可以在composer.json的autoload字段中增加自己的autoloader
{
"autoload": {
"psr-4": {"Acme\": "src/"}
}
}
composer将注册一个PSR-4 autoloader到Acme命名空间。
你可以定义一个从命名空间到目录的映射,此时src会在项目根目录,与vendor文件夹同级,例如src/Foo.php文件应该包含AcmeFoo类。
添加autoload字段后,应再次运行install命令来生成vendor/autoload.php文件。
引用这个文件也将返回autoloader的实例,你可以将包含调用的返回值存储在变量中,并添加更多的命名空间。
这对于在一个测试套件中自动加载类文件是非常有用的,例如:
$loader = require 'vendor/autoload.php';
$loader->add('Acme\Test\', __DIR__);
除了PSR-4自动加载,classmap也是支持的,这允许类被自动加载,即使不符合PSR-0规范。
最后
以上就是隐形小蝴蝶为你收集整理的初识Composer的全部内容,希望文章能够帮你解决初识Composer所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复