【发布时间】:2015-09-21 13:49:34
【问题描述】:
我正在使用 Symfony 2.6
我的主要包是 AppBundle,所以包中的所有命名空间如下所示:
AppBundle\目录名称
我想更改所有命名空间,以便最终得到如下内容:
MyCompanyName\ProjectName\AppBundle\DirectoryName
================================================ =========
接下来的文字显示了我尝试过的内容以及我遇到的错误。
我有 StringUtilities 类:
<?php
namespace MyCompanyName\ProjectName\AppBundle\Utility;
class StringUtilities {
}
我在这里使用 StringUtilities:
<?php
namespace AppBundle\Auth;
use MyCompanyName\ProjectName\AppBundle\Utility\StringUtilities as SU;
class UserChecker extends \Symfony\Component\Security\Core\User\UserChecker {
}
运行应用程序时,我收到此错误:
尝试从命名空间加载类“StringUtilities” “MyCompanyName\ProjectName\AppBundle\Utility”。你忘了一个“使用” 另一个命名空间的声明?
通过在 app/autoload.php 中添加这一行来解决这个问题
$loader->addPsr4('MyCompanyName\ProjectName\\', realpath(__DIR__.'/../src'));
现在我尝试更改 UseChecker 类的命名空间:
<?php
namespace MyCompanyName\ProjectName\AppBundle\Auth;
use MyCompanyName\ProjectName\AppBundle\Utility\StringUtilities as SU;
class UserChecker extends \Symfony\Component\Security\Core\User\UserChecker {
}
当我尝试通过控制台清除缓存时(php app/console cache:clear),我得到了这个错误:
[运行时异常]
自动加载器预期类“AppBundle\Auth\UserChecker”为 在文件中定义 “/home/damjan/Temp/licence-management/src/AppBundle/Auth/UserChecker.php”。 找到文件但类不在其中,类名或 命名空间可能有错字。
在浏览器中运行应用程序时,我收到此错误:
UserChecker.php 第 0 行中的 FatalErrorException:编译错误:不能 重新声明类 MyCompanyName\ProjectName\AppBundle\Auth\UserChecker
【问题讨论】:
-
我没有完整的答案给你。关于
Attempted to load class "StringUtilities" from namespace,您将在课堂内使用StringUtilities。而不是SU。搜索并更改为SU而不是使用声明。 -
和
RuntimeException错误是不言自明的。我想。仔细看..你需要改变什么? -
@HariKT SU 在代码中使用,问题不存在。如果我尝试更改命名空间,我会在任何类的捆绑包中出现类似这两个的错误。至于控制台的RuntimeException,我把异常的所有文字都贴出来了。
-
删除在 AppKernel 上注册的包并修复更改并再次添加包。这应该可行。
标签: php symfony namespaces