【发布时间】: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-autoload。namespace App\Http\Classes\应该是namespace App\Http\Classes,没有斜线。 Laravel 使用 PSR-4 自动加载标准。见here -
我完成了这两项工作,但仍然遇到同样的错误!!!
-
您阅读过自动加载标准吗?您可能想阅读它们,一旦阅读,错误就很明显了。
标签: php laravel namespaces