We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Composer 是PHP的一个依赖管理工具,用于申明和安装项目所依赖的代码库
vendor
创建一个composer.json文件,用于描述项目的依赖关系:
composer.json
{ "require": { "monolog/monolog": "1.2.*" } }
>=1.0
>=1.0,<2.0
>=1.0,<1.1|>=1.2
运行Composer需要PHP 5.3.2+以上版本,我们将从包的来源直接安装,例如从git、svn、hg载入包。
composer.phar
composer
composer install
composer.lock
composer update
对于库的自动加载信息,Composer将生成一个 vendor/autoload.php 文件,引入此文件将会得到一个免费的自动加载支持:
vendor/autoload.php
require 'vendor/autoload.php'
我们可以在composer.json的autoload字段中增加自己的autoloader:
autoload
{ "autoload": { "psr-4": {"Acme\\": "src/"} } }
Composer将注册一个PSR-4的autoloader到Acme命名空间,实现从命名空间到目录的映射;例如上例中src在我们的项目根目录,与vendor同级别,src/Foo.php文件应该包含Acme\Foo类。添加autoload字段后,需要再次运行install命令来生成vendor\autoload.php文件。
Acme
src
src/Foo.php
Acme\Foo
install
vendor\autoload.php
引用vendor\autoload.php文件将返回autoloader实例,可以将包含调用的返回值存储在变量中,并添加更多的命名空间,对于在一个测试套件中自动加载类文件时非常有用的:
$loader = require 'vendor/autoload.php'; $loader->add('Acme\\Test\\', __DIR__);
PSR-4 在键下定义从命名空间到路径的映射,相对于包根目录,当自动加载一个类(如指向目录的命名空间前缀)时,自动加载程序将查找已命名的文件并将其包含进来
classmap引用所有组合,都会在install/update过程中生成,并存储在文件中:
classmap
{ "autoload": { "classmap": ["src/", "lib/", "file.php"] } }
如果想要明确指定文件,在每次请求时都载入,可以使用files的autoloading,通常作为函数库的载入方式(非类库):
{ "autoload": { "files": ["src/functions.php"] } }
composer init
composer require
composer global 命令
composer search 包名
composer show 包名
composer depends
composer create-project
git clone
Composer是一个依赖管理工具,它在本地安装一些资源包,本质是一些包含东西的目录,通常存储PHP代码,理论上可以是任何东西,并且包含一个描述(有一个名称和版本号)用于识别该包。
一个资源库是一个包的来源,它是一个packages/versions的列表,默认情况下将Packagist.org注册到Composer,可以在composer.json中申明更多的资源库。
主资源库的类型位composer,使用一个单一的packages.json文件,包含所有的资源包的元数据。要引用一个composer资源库,只需要提供一个存放packages.json文件的目录路径,唯一必须的字段是packages,它的JSON结构如下:
packages.json
packages
{ "packages": { "vendor/package-name": { "dev-master": {@composer.json}, } } }
PEAR类型资源库,使得从任何PEAR渠道安装资源包成为可能。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
简介
Composer 是PHP的一个依赖管理工具,用于申明和安装项目所依赖的代码库
vendor
)中声明依赖关系
创建一个
composer.json
文件,用于描述项目的依赖关系:>=1.0
,>=1.0,<2.0
,>=1.0,<1.1|>=1.2
),或者通配符(1.0.*),或者赋值运算符(~1.2,相当于>=1.2,<2.0)安装和系统要求
运行Composer需要PHP 5.3.2+以上版本,我们将从包的来源直接安装,例如从git、svn、hg载入包。
composer.phar
(PHAR: PHP的归档)二进制文件到项目目录composer
命令composer install
,将找到composer.json
的组件最新版本,下载到vendor
目录,同时创建一个composer.lock
文件到项目根目录composer.lock
锁文件:composer会将安装时确切的版本号写入lock文件,锁定改项目的特定版本,推荐将锁文件提交到项目版本库中,若存在lock文件将忽略json中的定义composer update
,将根据composer.json
获得组件库的最新版本并更新写入锁文件自动加载
对于库的自动加载信息,Composer将生成一个
vendor/autoload.php
文件,引入此文件将会得到一个免费的自动加载支持:PSR-4
我们可以在
composer.json
的autoload
字段中增加自己的autoloader:Composer将注册一个PSR-4的autoloader到
Acme
命名空间,实现从命名空间到目录的映射;例如上例中src
在我们的项目根目录,与vendor
同级别,src/Foo.php
文件应该包含Acme\Foo
类。添加autoload
字段后,需要再次运行install
命令来生成vendor\autoload.php
文件。引用
vendor\autoload.php
文件将返回autoloader实例,可以将包含调用的返回值存储在变量中,并添加更多的命名空间,对于在一个测试套件中自动加载类文件时非常有用的:classmap:允许类被自动加载,即使不符合PSR-0规范
classmap
引用所有组合,都会在install/update过程中生成,并存储在文件中:Files
如果想要明确指定文件,在每次请求时都载入,可以使用files的autoloading,通常作为函数库的载入方式(非类库):
库:资源包
composer.json
,整个目录就是一个包;当你添加一个require到项目中,就是创建一个依赖于其他库的包;可以通过composer.json
中的name来定义包名Composer命令行
composer init
composer install
composer update
composer require
composer global 命令
composer search 包名
composer show 包名
composer depends
composer create-project
,类似于git clone
命令后将包的依赖安装到它自己的vendor目录资源库
包
Composer是一个依赖管理工具,它在本地安装一些资源包,本质是一些包含东西的目录,通常存储PHP代码,理论上可以是任何东西,并且包含一个描述(有一个名称和版本号)用于识别该包。
资源库
一个资源库是一个包的来源,它是一个packages/versions的列表,默认情况下将Packagist.org注册到Composer,可以在
composer.json
中申明更多的资源库。Types
主资源库的类型位composer,使用一个单一的
packages.json
文件,包含所有的资源包的元数据。要引用一个composer资源库,只需要提供一个存放packages.json
文件的目录路径,唯一必须的字段是packages
,它的JSON结构如下:PEAR
PEAR类型资源库,使得从任何PEAR渠道安装资源包成为可能。
The text was updated successfully, but these errors were encountered: