不能将 X 用作 Y,因为该名称已在使用中,即使它不是

php
2022-08-30 11:11:30

我使用的是 PHP 5.4,并且有一个类似于以下内容的 PSR-0 类结构。

A\库\会话.php

namespace A\Library;

class Session { ... }

我的\应用程序\会话.php

namespace My\Application;

class Session { ... }

My\Application\Facebook.php

namespace My\Application;
use A\Library\Session;

class Facebook { ... }

当我尝试运行该应用程序时,我收到以下错误:

无法将 A\Library\Session 用作会话,因为该名称已在 My\Application\Facebook 中使用.php

即使它不是,至少不是在这个文件中。Facebook.php文件仅声明该类,并仅导入一个类,即一个类。FacebookSessionA\Library

我能看到的唯一问题是另一个类存在于与该类相同的命名空间中,但由于它从未导入到Facebook.php文件中,我认为这根本不重要。SessionFacebook

是我错了(在这种情况下,请指向相关文档),还是这是一个错误?


答案 1

PHP 中确认了一个错误,该错误可能会影响您看到的行为。它应该是致命的错误,但是在启用opcache的情况下,它仍然可以完美地执行。

https://bugs.php.net/bug.php?id=66773

如果它仍然与您有关,请为该错误投票。


答案 2

不,这不是一个错误。如使用命名空间:别名/导入中所述

使用 A\库\会话;

与:

use A\Library\Session as Session;

因此,请尝试使用如下内容:

use A\Library\Session as AnotherSessionClassName;

推荐