php - 无法将 Illuminate\Routing\Controller 用作 Controller ,因为该名称已被使用

标签 php laravel laravel-5

我一直在学习使用 Laravel,观看 Larcasts 并使用文档,我遇到了一个描述 Eloquent 的类(class),但我遇到了错误:

at HandleExceptions->fatalExceptionFromError(
  array(
    'type' => '64',
    'message' => 'Cannot use Illuminate\Routing\Controller as Controller because the name is already in use'
  )
)

我很困惑,现在已经完全复制了提供的示例,但我仍然遇到错误。我正在使用 Laravel 5,所以我不知道是否有一些未记录的更改或者我是否只是做错了什么。我没有在谷歌搜索中找到任何相关的内容来解决这个问题,所以我希望这里有人可以提供帮助。这是产生错误的代码:

<?php namespace App\Http\Controllers;

use Illuminate\Routing\Controller;

use App\VarName;

class VarController extends Controller {

    public function Var()
    {
        $Variable = VarName::get();

        dd($Variable);
    }
}

根据文档,这应该有效,而且在我观看的视频中,它确实有效。我错过了什么?

我尝试删除 Controller 类,因为它似乎是导致 already in use 错误的原因,它破坏了一切,重新安装并尝试只使用 Controller,因为它扩展了 Eloquent 模型,但现在它说:

Pluralizer.php 第 258 行中的 ErrorException:call_user_func() 期望参数 1 是一个有效的回调,未找到函数 mb_strtolower 或函数名称无效

这超出了我对 Laravel 内部工作原理的理解,我卡住了,我不明白这个问题,根据文档,我没有发现我的代码有任何问题,这似乎是一个如此简单的步骤。我只想从数据库中检索信息,这是怎么回事?

在此先感谢您的帮助!

最佳答案

use Illuminate\Routing\Controller; 语句失败,因为 App\Http\Controllers 命名空间中已经有一个 Controller 类.

要解决眼前的问题,您可以更改 use 语句中的命名空间快捷方式:

use Illuminate\Routing\Controller as BaseController;

但是,针对您的特定问题的解决方案是您可能只想完全删除 use Illuminate\Routing\Controller; 语句。

在 Laravel 5 中,App\Http\Controllers\Controller 类已经扩展了 Illuminate\Routing\Controller 类。目的是所有新 Controller 都应该扩展 App\Http\Controllers\Controller 类。例如,查看默认的 App\Http\Controllers\HomeControllerApp\Http\Controllers\WelcomeController,因为它们都扩展了 App\Http\Controllers\Controller 类。

总而言之,您的两个选择是:

// rename the class in the use statement
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;

// note the name of the class being extended
class VarController extends BaseController {
    // snip
}

或者

// extend the existing App\Http\Controllers\Controller class
namespace App\Http\Controllers;

class VarController extends Controller {
    // snip
}

关于php - 无法将 Illuminate\Routing\Controller 用作 Controller ,因为该名称已被使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319560/

相关文章:

php - Laravel 5.4 Image Intervention 上传图片到 S3 0 Bytes

javascript - 在哪里存储 JWT token Laravel 5.6 应用程序?

laravel-5 - 在 Laravel Controller 中保存 blob 图像

拉拉维尔 5 : How to create a router model binding on multiple parameters

Java解密错误: data not block size aligned

php - 需要使用 htaccess 将 php 页面重定向到 html 吗?

php - (Laravel) 表关系和外键的用法

php - Laravel 将项目从 Ubuntu 服务器移动到本地 XAMPP

nginx - php-fpm下获取Nginx调用PHP文件处理404错误

php - 在两个 https 站点之间打开 jQuery $.ajax 连接的正确方法是什么?