资讯专栏INFORMATION COLUMN

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

xiaoqibTn / 806人阅读

摘要:接触过的同学都知道使用作为项目的包管理工具但是并不是独有的是的包管理工具这两者的关系就像于于一样但是发现真正项目中使用还是比较少的所以这里这里写一遍文章介绍的使用帮助那些对于还是有点模糊的同学此文跟没有任何联系安装的方式就不讲了具体安装方式

接触过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来重新生成加载文件.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22192.html

相关文章

  • php管理依赖关系工具composer学习笔记

    摘要:首先支持下黄老师的视频网站转型这篇的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单感兴趣的同志们可以上他视频网站购买视频,网站地址放在文末我的博客作用自动安装所需要的模块,自动加载管理项目,发布到网上上去是默认的加载组件地址安装下 首先支持下黄老师的视频网站转型这篇composer的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单感兴趣的同志们可以上他视频网站购买视频...

    CoyPan 评论0 收藏0
  • PHP 与扩展的管理工具 Pear、Composer 与 Pecl

    摘要:的包管理器是,用来浏览并搜索查看最新发行版下载。的包管理器是下一代的,使用编写,以格式发布。二发布时间轴三安装与使用安装主要是安装和这两个包管理器,然后通过包管理器安装其他。 PHP社区提供了几个管理扩展和包的工具包括Pecl、Pear、Pear2和Composer。在不了解的情况下去使用这些工具必然会出现困惑,所以下面就简单介绍下这几个管理工具。 一、简介 下面简要介绍 Pear、P...

    Batkid 评论0 收藏0
  • Swoft| Swoft 框架组件化改造

    摘要:框架组件化改造框架从单体应用到组件化改造的架构升级之路经过一年多的开发框架功能越来越完善也越来越复杂初创时期的单体应用已经无法支撑项目的快速发展于是开发组在年前为版制定了组件化改造的重构方案内容速览组件化原理包管理基础知识组件化方案来 date: 2018-3-21 13:22:16title: Swoft| Swoft 框架组件化改造description: Swoft 框架从单体应...

    desdik 评论0 收藏0
  • PHP回顾之Composer

    摘要:本文简要回顾相关概念和用法。相比之下已是明日黄花。分别对应的命令是根据关键字查找依赖包,例如查找本人发布的包。作为目前包依赖管理的最佳工具,值得每一位开发人员掌握。 转载请注明文章出处:https://tlanyan.me/php-review... PHP回顾系列目录 PHP基础 web请求 cookie web响应 session 数据库操作 加解密 Composer是PHP...

    Ocean 评论0 收藏0
  • 使用 docker-compose 搭建 Laravel 环境 (三)

    摘要:更换源更新源使用的源通过安装脚本安装应用所需要的依赖。 showImg(https://segmentfault.com/img/remote/1460000011106825); 有了第二篇《使用 Docker 搭建简易的 Java Web 环境 (二)》,懂了如何通过单一镜像创建 Docker 环境,这篇主要学习如何使用「docker-compose」。目标是:搭建 Laravel...

    bingchen 评论0 收藏0

发表评论

0条评论

xiaoqibTn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<