2017-03-01 65 views
-1

我最近學到了PHP中的命名空間的概念,只是想在我的Laravel項目中使用它們。要做到這一點,我決定先測試我學到的東西,創造了在我的控制器中執行以下代碼和我自己創建的自定義類如下:
從laravel中找不到的其他命名空間的類

應用程序\ HTTP \控制器\ 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(); 
    } 
} 


應用程序\ HTTP \控制器\類\ 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的身體正常工作,我不知道爲什麼,現在返回的致命錯誤:

FatalErrorException在HomeController.php線27:類 '應用\ HTTP \類\ UserTables' 未找到 1. HomeController.php線27


在使用它之前,我應該包含並導入類文件嗎?如果是這樣,使用名稱空間有什麼好處?

+0

替換的最簡單方法 「的命名空間應用\ HTTP \類\」 與「命名空間應用程序\ HTTP \類;」這應該是它。 – NaeiKinDus

+0

我仍然獲得相同的錯誤! – Tower

+0

您需要重建composer autoload文件。 'composer dump-autoload'。而'namespace App \ Http \ Classes \'應該是'namespace App \ Http \ Classes',沒有斜線。 Laravel使用PSR-4自動加載標準。看到[這裏](http://www.php-fig.org/psr/psr-4/) – Andrew

回答

-1

Try \ App \ Http \ Classes;

,你說,這從另一個命名空間

-1

就是我想你大概忘了括號:

$result = new userTables(); 
+0

我以前測試過這個,它仍然返回錯誤。 – Tower

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; 
相關問題