2016-03-07 114 views
1
$controller = 'DefaultController'; 
require('app/controllers/'.$controller.'.php'); 
$object = new $controller; 

這種失敗在new $controller,而不是在require ..我真的沒有想法在這裏實例化類不工作

Fatal error: Class 'DefaultController' not found in C:\wamp\www\controller\index.php on line 31

app/controllers/DefaultController.php 

<?php 
namespace App\Controllers; 

/** 
* DefaultController 
*/ 
class DefaultController 
{ 

    public function __construct() 
    { 
     # code... 
    } 

    public function index() { 

    } 
} 

編輯:我已經添加命名空間,仍然是相同的結果

$controller = 'DefaultController'; 
require('app/controllers/'.$controller.'.php'); 
$controller = 'App\Controller\\'.$controller; 
$object = new $controller; 

Fatal error: Class 'App\Controller\DefaultController' not found in C:\wamp\www\controller\index.php on line 33

編輯2:是啊..這是因爲你使用了錯誤的命名空間控制器不控制器

+2

向我們展示'app/controllers/DefaultController.php'的內容...! – deceze

+1

由於'app/controllers/DefaultController.php'存在,但它沒有名爲'DefaultController'的類是我的猜測。包括你的代碼。 – chris85

+0

沒有發佈** Defaultcontroller.php **我們不能幫你。 –

回答

2

你的類名App\Controllers\DefaultController,不DefaultController

require 'app/controllers/DefaultController.php'; 
$controller = 'App\Controllers\DefaultController'; 
$object = new $controller; 

你怎麼正方認爲廢除自動加載磁帶機/ require聲明是由你。

+0

將此內容添加到同一結果中,請參閱編輯 – shakethefloor

+0

仔細檢查該名稱空間名稱! – deceze

+0

aha!謝謝:)累了的眼睛今天沒有幫助我 – shakethefloor

3

嘗試

$controller = 'App\Controllers\DefaultController'; 
+0

補充說,相同的結果 – shakethefloor

+1

它是否適用於控制器而不是控制器? – PeterPan666

0

如果您使用名稱空間,則必須在創建實例之前將名稱空間前綴預先添加到類名稱中,然後使用新的

您的類存在於名稱空間中,其名稱包含名稱空間名稱。

+0

我相信你正在尋找術語*完全合格的名字*。 – deceze

+0

準確!謝謝!我是一個老人,我的記憶有時並不那麼好!大聲笑 –