PHP Composer Autoloader 结构简单
PHP Composer Autoloader Simple Structure
我有 Composer 工作,我想使用它的自动加载器来加载我的 classes,但它不工作。这是我的目录结构。我从一开始就非常简单。
index.php
composer.json
Vendor
controllers/webgl.php
里面 webgl.php 我有:
namespace controllers;
class webgl {
public function lesson1() {
}
}
在 index.php 我有:
require('vendor/autoload.php');
//require_once('controllers/webgl.php');
$webglController = new \controllers\webgl;
我的 composer.json 为自动加载定义了这个:
"autoload": {
"psr-4": {
"controllers\": "controllers/"
}
}
如果我取消注释第二个要求,脚本就会运行,否则我会得到 "Fatal error: Class 'controllers\webgl' not found in /vagrant/index.php on line 5".
我认为文件夹结构、class命名空间和class名称都符合psr-4。但我一定是误会了什么。我读过很多类似的问题,但 none 已经能够帮我解决问题。
谁能告诉我为什么我的 class 没有加载以及我应该如何解决它?
你定义了一个autoload directive吗?
您需要将此添加到您的 composer.json 文件中:
"autoload": {
"psr-4": {
"controllers\": "controllers/"
}
}
将自动装带器指向正确的方向,然后 运行
composer update
从项目目录中的终端。现在 class 将加载而无需明确要求其文件。
确保 运行 在更改 composer.json
后至少 composer dump-autoload
。 composer install
或 composer update
也会这样做。
从您的问题和评论看来,您在为自己的代码添加自动加载定义后似乎没有运行命令。
我有 Composer 工作,我想使用它的自动加载器来加载我的 classes,但它不工作。这是我的目录结构。我从一开始就非常简单。
index.php
composer.json
Vendor
controllers/webgl.php
里面 webgl.php 我有:
namespace controllers;
class webgl {
public function lesson1() {
}
}
在 index.php 我有:
require('vendor/autoload.php');
//require_once('controllers/webgl.php');
$webglController = new \controllers\webgl;
我的 composer.json 为自动加载定义了这个:
"autoload": {
"psr-4": {
"controllers\": "controllers/"
}
}
如果我取消注释第二个要求,脚本就会运行,否则我会得到 "Fatal error: Class 'controllers\webgl' not found in /vagrant/index.php on line 5".
我认为文件夹结构、class命名空间和class名称都符合psr-4。但我一定是误会了什么。我读过很多类似的问题,但 none 已经能够帮我解决问题。
谁能告诉我为什么我的 class 没有加载以及我应该如何解决它?
你定义了一个autoload directive吗?
您需要将此添加到您的 composer.json 文件中:
"autoload": {
"psr-4": {
"controllers\": "controllers/"
}
}
将自动装带器指向正确的方向,然后 运行
composer update
从项目目录中的终端。现在 class 将加载而无需明确要求其文件。
确保 运行 在更改 composer.json
后至少 composer dump-autoload
。 composer install
或 composer update
也会这样做。
从您的问题和评论看来,您在为自己的代码添加自动加载定义后似乎没有运行命令。