使用 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 4 不自动装配动态路由控制器

当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?

Symfony4:注释不存在,或者无法自动加载| @Assert NotBlank()|

symfony 3 [语义错误]类AppBundle Entity User中的注释@Doctrine ORM Mapping Model不存在,或者无法自动加载

Sass 加载器无法使用 Encore webpack 和 Symfony 5 加载 url

Symfony4加载类自定义文件夹时出错“预计找到类...但是找不到它”