来自另一个名称空间的类在laravel中找不到

时间:2017-03-01 16:30:09

标签: php laravel namespaces

我最近在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;
    }
}


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

  HomeController.php第27行中的

FatalErrorException:Class   &#39;应用软件\ HTTP \类\ UserTables&#39;未找到   1.在HomeController.php第27行


我应该在使用之前包含和导入类文件,如果是这样,使用命名空间会有什么好处?

3 个答案:

答案 0 :(得分:0)

这里有几个问题:

在你的家庭控制器中你有

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;

答案 1 :(得分:-1)

尝试\ App \ Http \ Classes;

正如你所说的那样来自另一个名称空间

答案 2 :(得分:-1)

我猜你可能忘了括号:

$result = new userTables();