如果路径与文件夹结构不匹配,Symfony2类加载器将不工作?

如果路径与文件夹结构不匹配,Symfony2类加载器将不工作?,symfony,classloader,Symfony,Classloader,这是我目前的结构 插件/ |---init.php |---/插件1/lib/ |---/插件2/lib/ |---/西蒙尼/ 我的代码如下所示: set_include_path(DIR_FS_CATALOG.'plugins'); require_once(DIR_FS_CATALOG.'plugins/Symfony/Component/ClassLoader/UniversalClassLoader.php'); // load the class loader and depend

这是我目前的结构

插件/

|---init.php

|---/插件1/lib/

|---/插件2/lib/

|---/西蒙尼/

我的代码如下所示:

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();
致命错误:找不到类“plugins\plugin1\MyClass”


我想知道我做错了什么?任何帮助都将不胜感激。

Symfony2类加载器符合PSR-0(),这意味着您的名称空间必须反映您的文件系统结构。

上有一个示例:无法在此发布代码,但是,如果您转到链接并查看带有doctrine namespace的示例,您将看到我的意思,我想知道这是否意味着您可以使用不同于文件结构的命名空间?假设您讨论的是最后一个代码块,这是有效的,因为它们告诉类装入器在哪里查找类文件。因此,如果您的
MyClass
位于
/plugin1/lib
目录中,则必须显式注册此命名空间。但是不能在同一名称空间中注册
/plugin1
/plugin1/lib
中的类。