npm 加载php,PHP包管理工具--Composer自动加载

接触过Laravel的同学都知道,Laravel使用Composer作为项目的包管理工具.但是Composer并不是Laravel独有的,Composer是PHP的包管理工具,这两者的关系就像pip于Python,npm于Node一样.但是发现真正项目中使用composer还是比较少的, 所以这里这里写一遍文章介绍Composer的使用,帮助那些对于Composer还是有点模糊的同学.此文跟Laravel没有任何联系.

安装Composer的方式就不讲了, 具体安装方式可以查看这里.

基本使用.

安装好Composer之后,只要在项目根目录新建compsoser.json之后就可以使用composer了,这点跟npm很像.composer.json的内容是以json格式书写的.

包管理工具最大的作用就是帮助我们管理包的依赖关系.当你的项目中需要一个日志系统的时候,你又不想去实现,想在网上找一找开源的日志系统.于是你找到了一个叫monolog/monolog的好东西.但是怎么在你的项目中使用它?这个时候就需要composer了.

在你的composer.json里面添加如下代码:

{

"require": {

"monolog/monolog": "~1.13"

}

}

前面说过,composer.json是以json格式书写的.require表示当前项目依赖于哪些包.写好之后,只要执行composer install,那么composer就会自动为我们下载这些包.下载好之后你会在项目中看到一个vendor的目录.

your_project_root_dir/

composer.json

vendor/

.....

.....

你在composer.json中记录的所有依赖都会被下载到这里.那么下载好之后如何使用这些包?我们都 知道在PHP中引入文件是一件很麻烦的事情,require, include, require_once, include_once都有那么点问题,使用自动加载函数spl_autoload_register吧,又得写一大堆逻辑.但是使用composer就很简单了,只要在你的index.php文件加上require_once __DIR__ . '/vendor/autoload.php';之后就可以使用这些第三方包了.

autoload

上面我们演示了如何通过使用composer使用第三方包, 但是有时候我们项目自己本身也有很多依赖要处理,但是写include之类总是不优雅,这个时候我们也可以使用composer来加载我们自己写的php代码.让composer来帮我们实现自动加载.

在composer.json有一个autoload字段就是来帮助我们实现自动加载的,其可以根据以下的4种定义方式来实现自动加载:

file

classmap

PSR-4

PSR-0

其中PSR-0和PSR-4是php编码标准.如果不清楚这个是什么东西的话, 可执行google.由于这里PSR-0标准已经不被推荐,所以我们下面介绍一下其他三种方式的使用.

PSR-4

假设我们现在有如下的目录结构:

your_project_root_dir/

app/

appTest1.php

sub/

appTest2.php

vendor/

composer.json

这么一来,根据PSR-4的标准, appTest1.php的命名空间应该是App,而appTest2.php的命名空间为Appsub.

在composer.json添加如下代码:

"autoload":{

"psr-4":{

"App//":"app/"

},

}

其中autoload表明了这是为了实现自动加载.而psr-4说明了我们这里使用PSR-4的自动加载规范."App//":"app/"表示App这个命名空间对应到app这个目录下.这个时候我们执行composer命令composer dumpautoload -o

执行完毕之后还是在index.php加上require_once __DIR__ . '/vendor/autoload.php',之后我们就可以直接使用app目录下的类而不用考虑自动加载的问题了, 因为composer都帮我们处理好了.

files&&classmap

当我们的目录结构不符合PSR-4标准的时候,我们也可以使用这两种方式来添加自动依赖.这两种方式使用起来就相当简单了.

"autoload":{

"files":["src/test.php"],

"psr-4":{

"App//":"app/"

},

"classmap":["lib/"]

}

如上.files节点上添加src/test.php,那么composer就会自动为你加载这个文件,使用classmap则会为你加载lib/目录下的所有文件.修改完autoload的内容之后要记得执行composer dumpautoload -o来重新生成加载文件.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值