如何为我的项目创建 PSR-4 自动加载器?

Posted

技术标签:

【中文标题】如何为我的项目创建 PSR-4 自动加载器?【英文标题】:How to create a PSR-4 autoloader for my project? 【发布时间】:2020-07-10 03:08:27 【问题描述】:

我正在创建一个 php 项目并希望实现 PSR-4 自动加载。

不知道需要在vendor目录下创建哪些文件来实现类文件的自动加载。

【问题讨论】:

【参考方案1】:

如果您使用composer,则无需创建自动加载器,而是让composer 完成它的工作并为您创建它。

您唯一需要做的就是在composer.json 上创建适当的配置并执行composer dump-autoload

例如:


    "autoload": 
        "psr-4": "App\\": "src/"
    

通过上述操作,如果你有这样的文件结构

├── src/
│   ├── Controller/
│   ├── Model/
│   ├── View/
│   └── Kernel.php
├── public/
│   └── index.php
└── vendor/

执行composer dump-autoload后,自动加载器将在vendor/autoload.php上生成。

您的所有类都应该嵌套在App 命名空间内,并且每个文件只能放置一个类。

例如:

<?php /* src/Controller/Home.php */

namespace App\Controller;

class Home  /* implementation */ 

您只需在入口点脚本中包含自动加载器(例如index.php)。

<?php

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

这将允许您在此之后直接从任何地方直接加载您的类,如下所示:

use App\Controller\Home;

$homeController = new Home();

这在文档here 中有解释。

【讨论】:

一个漂亮的答案。 非常感谢您的回答。你让 Psr-4 自动加载器让我的生活更轻松了。

以上是关于如何为我的项目创建 PSR-4 自动加载器?的主要内容,如果未能解决你的问题,请参考以下文章

PSR-4 没有加载我的项目类

在 Laravel 中无法自动加载 psr-4

Laravel psr-4 不自动加载

php PSR-4类自动加载器#php #class #autoloader

composer+psr-4实现自动加载

使用PSR-4配合composer autoload 自动加载文件夹