如何为我的项目创建 PSR-4 自动加载器?
How to create a PSR-4 autoloader for my project?
我正在创建一个 PHP 项目并希望实现 PSR-4 自动加载。
我不知道我需要在 vendor 目录中创建哪些文件来实现 class 个文件的自动加载。
如果您正在使用 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
上生成。
你所有的 classes 都应该嵌套在 App
命名空间中,每个文件你应该只放一个 class。
例如:
<?php /* src/Controller/Home.php */
namespace App\Controller;
class Home { /* implementation */ }
您只需要在入口脚本中包含自动加载器(例如 index.php
)。
<?php
require '../vendor/autoload.php';
这将允许您在此之后从任何地方直接加载您的 classes,如下所示:
use App\Controller\Home;
$homeController = new Home();
这在文档中有解释,here。
我正在创建一个 PHP 项目并希望实现 PSR-4 自动加载。
我不知道我需要在 vendor 目录中创建哪些文件来实现 class 个文件的自动加载。
如果您正在使用 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
上生成。
你所有的 classes 都应该嵌套在 App
命名空间中,每个文件你应该只放一个 class。
例如:
<?php /* src/Controller/Home.php */
namespace App\Controller;
class Home { /* implementation */ }
您只需要在入口脚本中包含自动加载器(例如 index.php
)。
<?php
require '../vendor/autoload.php';
这将允许您在此之后从任何地方直接加载您的 classes,如下所示:
use App\Controller\Home;
$homeController = new Home();
这在文档中有解释,here。