php之composer-composer.json参数autoload详解

简介

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

对于类库的自动加载,Composer 生成了一个 vendor/autoload.php 文件。引入这个文件,就能得到一个免费的自动加载支持,这种感觉真是棒极了~

本文主要是介绍如何利用 Composer 自带的自动加载机制,加载本地自定义的包(即不是来自于 packagist)。

使用

1. 在 composer.json 文件中的 autoload 字段中添加自己的 autoloader。

目前 Composer 支持四种自动加载映射的方式:

  • PSR-0 autoloading

  • PSR-4 autoloading

  • classmap generation

  • files

下面只介绍 PSR-4,为什么?因为它足够方便好用(当你添加类时不需要重新生成 autoloader)。详细请查看 自动加载 - 参考。

PSR-4(推荐)

{
    "autoload": {
        "psr-4": {
            "First\\": "src/",
            "Temp\\": "lib/"
        }
    }
}

上面的代码采用 PSR-4 规范,该规范包含了 PHP 最新的自动加载标准,它要求必须使用 namespace (命名空间)的方式。

First\\ 表示命名空间,必须以 \\ 结尾,避免相似的命名空间导致冲突,若包含子命名空间,可以这样表示:First\\Second\\

src/ 表示命名空间所在目录为与 Composer 的 vendor 目录同级的 src 目录,如下所示:

根目录
├─src/  (First/) 
│  ├─Curl.php 
│
├─vendor/
│  ├─autoload.php
│
├─composer.json
├─composer.lock
├─index.php

如果需要在多个目录下搜索相同的命名前缀,可以用一个数组提供:

{
    "autoload": {
        "psr-4": {
            "First\\": ["src/", "lib/"]
        }
    }
}

2. 修改完 composer.jsonautoload 字段后需要更新一下 Composer 的自动加载类:

composer dumpautoload -o

3. 被调用文件和调用文件示例

被调用文件 Curl.php 的命名空间如下表示:

<?php

namespace First;

class Curl
{
}

index.php 文件中调用 Curl.php 的方式如下:

<?php

require'../vendor/autoload.php';

use First\Curl;

$curl = new Curl();
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值