【问题标题】:Class from another namespace not found in laravel在 laravel 中找不到来自另一个命名空间的类
【发布时间】:2017-07-21 02:13:45
【问题描述】:

我最近在PHP 中学习了命名空间的概念,只想在我的Laravel 项目中使用它们。为此,我决定首先测试我所学到的知识,并在我的控制器中创建了以下代码以及我自己创建的自定义类,如下所示:

app\Http\Controllers\HomeController.php:

<?php
namespace App\Http\Controllers;

use App\Http\Classes\UserTables as userTables;
use Illuminate\Http\Request; 

class HomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {
        //return view('home');
        $result = new userTables;
        $result->CheckCreate();
    }
}


app\Http\Controllers\Classes\UserTables.class.php :

<?php
namespace App\Http\Classes\

class UserTables
{
    public function CheckCreate ()
    {
        $user_id = Auth::user()->id;
        $user_name = Auth::user()->name;
        $table_name = $user_name . '_' . $user_id;
        echo $table_name;
    }
}


正如我之前测试过这个概念并且它在 localhost 而不是在 Laravel 的主体中正常工作,我想知道为什么它现在返回以下致命错误:

HomeController.php 第 27 行中的 FatalErrorException:类 'App\Http\Classes\UserTables' 未找到 1.在HomeController.php第27行


我应该在使用之前包含并导入类文件吗?如果是的话,使用命名空间有什么好处?

【问题讨论】:

  • 将“namespace App\Http\Classes\”替换为“namespace App\Http\Classes;”应该就是这样。
  • 我仍然遇到同样的错误!!
  • 您需要重建 composer 自动加载文件。 composer dump-autoloadnamespace App\Http\Classes\ 应该是 namespace App\Http\Classes,没有斜线。 Laravel 使用 PSR-4 自动加载标准。见here
  • 我完成了这两项工作,但仍然遇到同样的错误!!!
  • 您阅读过自动加载标准吗?您可能想阅读它们,一旦阅读,错误就很明显了。

标签: php laravel namespaces


【解决方案1】:

这里有几个问题:

在您的家庭控制器中,您有

use App\Http\Classes\UserTables as userTables;

虽然 UserTable 文件保存在

app\Http\Controllers\Classes\UserTables.class.php

并且有命名空间

namespace App\Http\Classes\;


解决此问题的最简单方法是将 UserTables 中的命名空间更改为

namespace App\Http\Controllers\Classes;

【讨论】:

    【解决方案2】:

    试试\App\Http\Classes;

    正如你所说,它来自另一个命名空间

    【讨论】:

      【解决方案3】:

      我猜你可能忘记了括号:

      $result = new userTables();
      

      【讨论】:

      • 我之前已经测试过它仍然返回错误。
      猜你喜欢
      • 2012-05-27
      • 2016-02-06
      • 2015-09-23
      • 2015-09-15
      • 1970-01-01
      • 2018-02-04
      • 2015-03-06
      • 2021-12-31
      相关资源
      最近更新 更多