2012-01-13 103 views
0

這是我目前的結構如果路徑不匹配文件夾結構,Symfony2類加載器不工作?

插件/

| ---的init.php

| ---/plugin1/lib中/

| ---/plugin2/lib目錄/

| ---/Symfony的/

我有這樣的代碼:

set_include_path(DIR_FS_CATALOG.'plugins'); 

require_once(DIR_FS_CATALOG.'plugins/Symfony/Component/ClassLoader/UniversalClassLoader.php'); 

// load the class loader and dependency injection component 
$loader = new Symfony\Component\ClassLoader\UniversalClassLoader(); 

$loader->registerNamespaces(array('plugins\\plugin1' => __DIR__.'/plugins/plugin1/lib', 'plugins' => DIR_FS_CATALOG.'plugins')); 
$loader->registerNamespace('Symfony',__DIR__.'/plugins'); 

$loader->register(); 


use plugins\plugin1\MyClass; 

MyClass::init(); 

致命錯誤:類 '的插件\ plugin1 \ MyClass的' 未找到

我不知道我做了什麼錯?任何幫助將非常感激。

回答

1

Symfony2類加載器符合PSR-0(https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md),這意味着您的名稱空間必須反映您的文件系統結構。

+0

在http://symfony.com/doc/2.0/components/class_loader.html 有這個例子:[編輯]想不出郵編這裏,但如果你去的鏈接,看到主義的例子命名空間,你會看到我的意思 我不知道這是否意味着你可以有不同於文件結構的命名空間? – mr1031011 2012-01-14 04:13:07

+0

假設你正在談論最後一個代碼塊,這是可行的,因爲它們告訴類加載器在哪裏查找類文件。所以如果你的'MyClass'在'/ plugin1/lib'目錄下,你必須顯式地註冊這個名字空間。但是你不能在同一個命名空間中從'/ plugin1'和'/ plugin1/lib'註冊類。 – prehfeldt 2012-01-16 08:23:04

相關問題