PHP,命名空间中的新变量类

2022-08-31 01:04:28

我正在试验 PHP 5.3 的命名空间功能,我只是不知道如何使用命名空间前缀实例化新类。

这目前工作正常:

<?php
new $className($args);
?>

但是,如何将命名空间预置在变量类名前面呢?以下示例不起作用。

<?php
new My\Namespace\$className($args);
?>

此示例产生:解析错误:语法错误、意外T_VARIABLE


答案 1

试试这个:

$class = "My\Namespace\\$className";
new $class();

变量前必须有两个反斜杠才能转义它\\$className


答案 2

我是这样做的:

$classPath = sprintf('My\Namespace\%s', $className);
$class = new $classPath;

请注意单引号而不是双引号。


推荐