You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ToroPHP类未找到问题:MVC框架路由控制器分离后报错

解决ToroPHP路由中控制器类未找到的问题

这问题核心是Composer PSR-4自动加载规则和控制器的命名空间不匹配导致的,下面是一步步的修复方案:

1. 给HomeController添加对应命名空间

修改app/controllers/HomeController.php,补充和Composer配置对应的命名空间:

<?php
namespace Links\Controllers;

class HomeController {
    function get() {
        echo "hello world";
    }
}

2. 更新路由中的类名(使用完整命名空间)

在public/index.php的路由配置里,把类名改成带命名空间的完整路径:

<?php
require_once __DIR__ . '/../vendor/autoload.php';
ToroHook::add("404", function() {
    echo "404 - Not Found";
});
Toro::serve(array(
    "/" => "Links\\Controllers\\HomeController"
));
?>

3. 重新生成Composer自动加载文件

因为调整了命名空间和自动加载的关联,需要让Composer更新它的自动加载映射,在项目根目录运行:

composer dump-autoload

问题原因说明

  • 你的composer.json配置了PSR-4规则:"Links\\Controllers\\": "app/controllers",这意味着只有归属Links\Controllers命名空间的类,Composer才会从app/controllers目录去查找。之前的HomeController没有命名空间,自动加载器自然找不到它。
  • ToroPHP的路由需要指定类的完整标识符(包含命名空间),如果只写HomeController,它会在全局命名空间下查找,找不到我们放在Links\Controllers下的类,最终抛出类未找到或触发404错误。

内容的提问来源于stack exchange,提问作者Karan Shrivastav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:19:37