Php Slim3 PSR-4自动装弹机
我正在编写Slim3 API,出于某种原因,slim没有加载composer中定义的命名空间 这是项目结构 文件夹结构:Php Slim3 PSR-4自动装弹机,php,psr-4,slim-3,Php,Psr 4,Slim 3,我正在编写Slim3 API,出于某种原因,slim没有加载composer中定义的命名空间 这是项目结构 文件夹结构: projectApi - composer.json - src - public - index.php - ProjectName - Api - Controllers - Entities - Commands My composer文件包和PSR-4自动加载程序设置 co
projectApi
- composer.json
- src
- public
- index.php
- ProjectName
- Api
- Controllers
- Entities
- Commands
My composer文件包和PSR-4自动加载程序设置
composer.json
{
"require": {
"slim/slim": "^3.0",
"symfony/yaml": "3.1",
"symfony/console": "3.1",
"symfony/process": "3.1",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"sabre/xml": "1.1.0",
"php-di/php-di": "@dev",
"php-amqplib/php-amqplib": "@dev",
"ramsey/uuid": "dev-master",
"monolog/monolog": "~1.15@dev",
"predis/predis": "~1.0.1",
"spipu/html2pdf": "^4.5",
"iio/libmergepdf": "~3.0"
},
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"src\\ProjectName\\": "src/ProjectName/"
}
},
"autoload-dev": {
"psr-4": { "src\\ProjectName\\Tests\\": "tests" }
}
}
index.php
类别控制器
namespace ProjectName\Api\Controllers;
class CategoryController
{
/**
* @param \Slim\App $app
* @return array
*/
public function index(\Slim\App $app)
{
return ['Cats', 'Cats2', 'Cats3'];
}
}
**routes.php**
$app->get('/v1/category/list', function (Request $request, Response $response) {
$response = $response->withHeader('Content-type', 'application/json');
$categoryCtrl = new \ProjectName\Api\Controllers\CategoryController();
});
Slim无法加载命名空间\ProjectName\Api\Controllers\CategoryController
你知道哪里出了什么问题吗
致意
Danyal您的composer.json文件中的自动加载程序定义不正确 模式是:
"psr-4": {
"Namespace\\Prefix\\": "/path/to/source/root"
}
因此,在您的情况下,可能应该是:
"autoload": {
"psr-4": {
"ProjectName\\": "src/ProjectName/"
}
},
"autoload-dev": {
"psr-4": { "ProjectName\\Tests\\": "tests/" }
}
autoloaddev
definition假设在项目根路径下有一个tests
目录,这在您的问题中没有提到。我会尝试将`“psr-4”:{“src\\ProjectName\\\ \”:“src/ProjectName/”}`更改为`“psr-4”:{“ProjectName\\”:“src/ProjectName/”}`Runcomposer dump autoload-o
并告诉它是否有效?您是对的,我在名称空间中添加了src。它正在工作。谢谢你的帮助。