我最近在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行
我应该在使用之前包含和导入类文件,如果是这样,使用命名空间会有什么好处?
答案 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();