php - 找不到 Laravel 命名空间类

标签 php laravel-4 namespaces

我是 Laravel 命名空间的新手。

我正在尝试做这样的事情:

namespace App\Controllers; // when I remove this line, everything works fine... I need to include this

class HomeController extends BaseController {

    protected $layout = "layouts.main";

    public function __construct() {
        // some stuff here
    }

    /**
     * Home page.
     * @return View
     */
    public function getHome() {
        // Show the page
        $this->layout->content = View::make('home');
    }
}

但我遇到了这个奇怪的错误,
Class HomeController does not exist 

这是我的一些 composer.json 内容,
"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/libraries",            
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
    ]
}, 

我也执行过,
composer dump-autoload

当我在路由这样的东西时,
# Default
Route::get('/', array('as' => 'home', 'uses' => 'HomeController@getHome'));

最佳答案

这是可能发生此错误的一种常见情况:

想象一下,您正在使用该类定义路由:

Route::get('/home', 'HomeController@getIndex');

Laravel 核心将把该字符串( 'HomeController@getIndex' )传递给路由类深处的一些方法,解析它,实例化 HomeController , 并调用 getIndex .该代码是否包含 use App\Controllers指示?不太可能,因为这是您创建的内容。基本上,无论在哪里HomeController类被使用(我不知道它在哪里),PHP 解释器不会知道该类来自哪里。

解决方法是使用完全合格类(class)名称。这意味着在字符串中包含完整的命名空间,如下所示:
Route::get('/home', '\App\Controller\HomeController@getIndex');

现在,当 Laravel 尝试实例化该类时,它拥有找到它所需的一切。

我不确定这是否是问题所在——您需要向我们展示发生错误的代码——但这是一种可能性。

关于php - 找不到 Laravel 命名空间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27842121/

相关文章:

xml - 使用 Groovy+Smooks 向现有 XML 添加命名空间声明

PHP:何时使用类上的 namespace 进行分组?

c# - 将一个项目的 DLL 引用引用到另一个项目中

php - 数据库搜索错误中的 session 变量解析错误 : syntax error, 意外

php - Mysql Select where time difference 列之间的日期

php - 发送到服务器时,应用程序不会以 Release模式安装

php - Laravel 4 Eloquent 关系不起作用

php - 在 Symfony : How to exclude module from filters chain

session - Laravel - Request::server ('HTTP_HOST' ) 从辅助类中返回 'localhost'

php - Laravel Eloquent PostgreSQL 保存数组错误: preg_replace(): Parameter mismatch