2011-12-30 31 views
1

看起來像symfony2類加載器不允許命名空間使用不同的路徑,任何人有任何想法?(除了更改類加載器)。如果路徑結構不是默認值,則不能使用symfony2類加載器

$loader = new \Symfony\Component\ClassLoader\UniversalClassLoader(); 
$loader->registerNamespaces(
    array(
    'Symfony\\Component' => \realpath('/myapp/path' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'Symfony2Components') 
) 
); 
$loader->register(true); 


// in other file 

use Symfony\Component\HttpFoundation\Request; 

$request = Request::createFromGlobals(); // <-- resolves to : '/myapp/path/vendor/Symfony2Components/Symfony/Component/HttpFoundation/Request.php' 
// expected '/myapp/path/vendor/Symfony2Components/HttpFoundation/Request.php' 
+0

單引號之間有一個雙反斜線,可能是錯誤。 – Maerlyn 2011-12-30 17:57:42

回答

1

這不是一個錯誤。 Symfony2的ClassLoader的只是符合PSR-0:從文件系統加載時

每個命名空間分隔符轉換爲DIRECTORY_SEPARATOR。

您只需定義根路徑,但所有命名空間部分仍將在路徑中使用。

+0

是的你是對的,檢查了PSR-0標準。 – nimmen 2012-01-17 18:03:02

+0

你是對的,錯過了那一個 – nimmen 2013-04-12 13:58:56

0

@Maerlyn我也想過這個問題,但它不是,好通知你。

https://github.com/nimmen/ClassLoader/commit/0881a02d3210fd6376abd3b62f0c665642d310bb
作出小的變化,現在它的工作原理是(IMO,因爲它應該):

寄存器命名空間例如:

名\空間=> /目錄/ ectory
另一個\名稱=> /另一/ DIR

\名\空間\類名解析爲:

/dir/ectory/classname.php

\其他\用戶名\空間\類解析爲:

/another/dir/space/class.php

希望這會幫助某人。

相關問題