使用 Symfony 自动加载器
Posted
技术标签:
【中文标题】使用 Symfony 自动加载器【英文标题】:Using Symfony Autoloader 【发布时间】:2014-05-26 13:29:37 【问题描述】:我正在测试将我的应用程序从现在使用的 SplAutoloading 迁移到 Symfonys 自动加载器。
我的应用结构是
> Components
> Models
> Core
Test.php
Index.php
我的Test.php是这样的
namespace Core;
class Test
尝试将其加载到我的 index.php 中
define('__WEB_ROOT__', __DIR__);
//Symfony Class Loader
require_once __WEB_ROOT__ . '/Components/ClassLoader/UniversalClassLoader.php';
use Symfony\Component\ClassLoader\UniversalClassLoader;
$oLoader = new UniversalClassLoader();
$oLoader->registerNamespaces(
array(
'Core' => __WEB_ROOT__ . '/Models/Core/'
)
);
$oLoader->register();
use Core\Test;
$oTest = new Test();
不知道为什么类不能这样加载?有什么帮助吗?这里的正确用法是什么
【问题讨论】:
【参考方案1】:设置的文件路径不应包含命名空间名称。所以如果Core\Test
位于__WEB_ROOT__/Models/Core/Test.php
,你应该将Core
命名空间注册到__WEB_ROOT__/Models
:
$oLoader->registerNamespaces(array(
'Core' => __WEB_ROOT__ . '/Models/',
));
【讨论】:
以上是关于使用 Symfony 自动加载器的主要内容,如果未能解决你的问题,请参考以下文章
当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?
Symfony4:注释不存在,或者无法自动加载| @Assert NotBlank()|
symfony 3 [语义错误]类AppBundle Entity User中的注释@Doctrine ORM Mapping Model不存在,或者无法自动加载