2014-01-07 40 views
2

我想自動加載一個類與一個變量,但它不起作用。有人可以幫我嗎? 我有一個A類和含5班的子文件夾subfoo文件夾foo的(B類,C類,...)自動加載不能與變量

類AI

要使用的類,當我這樣做:

$obj = new classB(); 

它工作得很好。 當我這樣做:

$name = 'ClassB'; 
$obj = new $name(); 

它的工作原理。當我將B文件從子文件夾移動到foo文件夾時,第二個腳本也起作用。

有人可以幫我嗎?

+0

那麼,如何自動裝卸知道它應該在'foo/subfoo'而不是'foo'中尋找類文件? –

+0

我不知道,我想它會自動執行它?自動加載器如何知道在第一個代碼片段中查找foo/subfoo而不是在/ foo中? 我該如何解決這個問題? – user3156386

+0

'我不知道,我想知道它會自動執行嗎?':) – Peon

回答

0

在這種情況下,我不認爲這是如何實例化對象,而是更多地如何自動加載你的類。

在這一點上,我假設你知道php's ability to let you autoload classes。如果你不這樣做,那麼我需要知道你有什麼設置(框架?任何幫助類?),因爲這可能會爲你自動加載。

看來你需要配置自動加載功能。

這裏是什麼,我覺得你的自動加載功能看起來像一個基本的例子:

function my_autoloader($class) { 

    $file = $class . '.class.php'; // E.g. ClassB.class.php 

    if(file_exists($file)) { 
     require_once($file); 
    } 

} 

spl_autoload_register('my_autoloader'); 

在這種情況下,它檢查當前的工作目錄,看看文件{$class}.class.php存在。

在上面的場景中,您提到您將類移動到子目錄subfoo。 因此,你需要改變你的自動加載機的功能來體現新的子目錄,因爲PHP會不會覺得更深入的目錄結構,除非你告訴它:

$file = 'subfoo/' . $class . '.class.php'; // Same E.g. will now look for subfoo/ClassB.class.php