> 개발 도구 > composer > 본문

Composer 시리즈의 자동 로드에 대한 자세한 설명

藏色散人
풀어 주다: 2019-08-21 14:49:47
앞으로
6012명이 탐색했습니다.

下面由composer使用教程栏目为大家讲解Composer系列之autoload文件,希望对需要的朋友有所帮助!

Composer 시리즈의 자동 로드에 대한 자세한 설명

简介

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

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

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

使用

在 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 目录,如下所示:

First/
|---examples/
    |---get.php
|---src/
    |---Curl.php
|---vendor/
    |---composer/
    |---autoload.php
|---composer.json
로그인 후 복사

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

{
    "autoload": {
        "psr-4": {"First\\": ["src/", "lib/"]}
    }
}
로그인 후 복사

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

composer dumpautoload -o
로그인 후 복사

对应 Curl.php 的命名空间如下表示:

<?php
namespace First;
class Curl
{
}
로그인 후 복사

引用 Curl.php 的方式如下:

<?php
require &#39;../vendor/autoload.php&#39;;
use First\Curl;
$curl = new Curl();
...
...
로그인 후 복사

小结

之前一直以为 namespace 是 PHP 内置好的,只需要在某个类上声明一下某个命名空间,在调用这个类的地方 use 一下就好。。。

直到前几天脱离框架,单独写了几个类,然后被 xxx class not found 错误折磨到怀疑人生,才明白需要有个 autoloader 才行。

题外话

现在 Composer 已经成为 PHP 的依赖管理标杆,多利用这个工具为自己的开发带来方便。

框架能大大减少开发成本,但有时候不利于个人技术的提升。在使用热门框架时,多看看框架的代码,不仅帮助自己理解掌握框架,也能带来许多编程思想和技术上的提高。

위 내용은 Composer 시리즈의 자동 로드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿