生成composer.json
首先需要安装composer,composer -v出现如下,则表明安装成功。
- 编写composer.json
{
"name": "www/test",
"description": "wwwtest",
"authors": [
{
"name": "www",
"email": "example@qq.com"
}
],
"repositories": [
{
"type": "vcs",
"url": "github项目url"
}
],
"version":"1.0.106",
"require": {
"smalot/pdfparser":"1.1.*"
},
"autoload":{
"psr-4":{
"model\":"src/"
}
}
}
1.name和description是你给这个php项目起的名字,description需要来描述这个包的作用。
2.authors 作者可以有多个
3.repositories相当于需要下载的代码库所在的仓库,默认会有一个全局的仓库,在这里添加一个是因为如果你有个私人的仓库,则可以在这里声明
4.version是版本号(有几种方式:1.确切版本号1.1.1,2.范围版本号>=1.1,<1.2; 3.统配符版本号:1.0.*即,大于1.0小于1.1;4赋值运算版本号,~1.0表示用于匹配>=1.0并且小于2.0的版本)
5.require则通过“name”:"version"声明,可以有多个,require以后使用composer install命令composer会下载代码并自动加载
6.autoload 自动加载类
-
也可以通过composer init生成一个composer.json
以smalot/pdfparser为例,在包列表 查找对应包的信息。
-
使用composer install安装
运行composer install
,composer会检查composer.json组件的名称和版本,下载到当前文件夹的vendor文件夹。如没当前目录没有vendor文件夹,会在当前目录生成一个vendor目录。下载完成之后会在当前文件夹创建一个名为composer.lock的锁文件。当执行composer install会先检查该文件的版本号,如果存在,
就先下载该文件指定的版本。如果某个组件有了新的版本,需要执行composer update
去更新并重新生成新的composer.lock文件。
自动加载机制
composer install 还会在vendor目录下提供一个自动下载文件,在项目中执行require 'vendor/autoload.php'
语句引入这个文件。 加载相应的类文件。
自动加载有psr-0,psr-4,classmaphe和file四种规范形式。其中psr-4是最受欢迎的。自动加载规范psr-4
的自动加载基于文件夹和命名空间,在composer.json文件中直接添加autoload字段自动实现命名空间到目录的映射。
//根文件夹 lib
//根命名空间 model
//file lib/A.php
namespace model;
class A {
}
//file lib/path/B.php
namespace modepath;
class B{
}
//file demo.php
$a = new modelA();
$b = new modelpathB();
//或者use
//file demo.php
use modelA;
use modelpathB;
$a = new A();
$b = new B();