【问题标题】:php aliasing a type using a variablephp使用变量给类型起别名
【发布时间】:2022-01-14 20:26:55
【问题描述】:

我有几个命名空间,它们有自己的异常处理程序。 我还有一个通用脚本,它需要引用一个异常处理程序 - 所需的命名空间保存在一个全局字符串中。

namespace myNamespace1;
class NewException extends \Exception
{
    ....
}
namespace myNamespace2;
class NewException extends \Exception
{
    ....
}

$ref 变量是一个包含 myNamespace1 或 myNamespace2 的字符串。我想使用这个全局变量为异常之一命名

global $ref;
$alias = $ref . "\NewException";
define("ex", $alias);
use ex as EX;

在我尝试抛出 EX 之前,这不会给出错误。然后无法加载该类。 可以这样做吗?

【问题讨论】:

标签: php namespaces


【解决方案1】:

use ex as EX; ex 被视为类名,不能这样使用常量或变量。如果要给类名取别名,可以使用class_alias()

global $ref;
class_alias($ref . '\NewException', 'my\Exception');

// ...

throw new \my\Exception();

请注意,您只能有一个定义my\Exceptionclass_alias() 调用,并且此别名将在项目的其他地方可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2010-11-13
    • 1970-01-01
    • 2022-10-24
    • 2014-07-25
    相关资源
    最近更新 更多