找不到超薄3类(控制器)

时间:2017-07-22 20:16:53

标签: php composer-php slim-3

我目前正在尝试熟悉Slim 3,只想添加一个简单的控制器。

错误讯息:

Details
Type: Error
Message: Class 'app\controllers\HomeController' not found
File: C:\xampp\htdocs\slim\app\config\dependencies.php
Line: 13

我的项目结构:

\app
   \config
      routes.php
      dependencies.php
   \controllers
      HomeController.php
\public
   index.php
composer.json

composer.json

"autoload": {
    "psr-4" : {
        "App\\" : "app/"            
    }
}

dependencies.php

<?php
$container = $app->getContainer();

// controller
$container['HomeController'] = function($container) {
    return new app\controllers\HomeController;
};

routes.php文件

<?php

$app->get('/', 'HomeController:index');

HomeController.php

<?php

namespace App\Controllers;

class HomeController 
{
    public function index()
    { ... }
}

的index.php

<?php    
require __DIR__ . '/../vendor/autoload.php';  
require __DIR__ . '/../app/config/settings.php';
$app = new \Slim\App(["settings" => $config]);    
require __DIR__ . '/../app/config/dependencies.php';    
require __DIR__ . '/../app/config/routes.php'; 
$app->run();

我还尝试了什么:

  • 我没有运气就试过了composer dump-autoload -ocomposer update
  • 我在我的命名空间和文件夹结构中仔细检查了拼写错误。
  • 我不使用短标签,例如。 <?

我很感激您的任何建议!

2 个答案:

答案 0 :(得分:4)

PHP的命名空间不区分大小写,Windows文件系统不区分大小写,但AFAIK作曲家的自动装载器不是。试试:

"autoload": {
    "psr-4" : {
        "app\\" : "app/"            
    }
}

答案 1 :(得分:0)

不知道这对谁有帮助。所以我们有一个类似的问题。

我们所做的是删除供应商文件,然后使用“ composer install”重新安装依赖项。