在其他一些文件中(例如someusername\classes\MyClass
),我有
<?php
namespace someusername;
class MyClass
{
static function Test()
{
echo "working";
}
}
?>
我偶然发现了一个恼人的小障碍:
<?php
$user = "someusername";
$class = "MyClass";
require_once "$user\\classes\\$class";
//This line should be the equivalent of 'use someusername as User;'
use $user as User; //Parse Error: syntax error, unexpected '$user'
$c = "User\\$class";
$UserSpecificClass = new $c();
?>
我可以通过以下方式解决这个问题,但是使用声明可以使事情变得更好
<?php
$user = "someusername";
$class = "MyClass";
require_once "$user\\classes\\$class";
$c = "$user\\$class";
$UserSpecificClass = new $c();
?>
是否可以在PHP中的use
语句中使用变量?或者用这种方法避免使用声明是否更好?
答案 0 :(得分:2)
导入在编译时执行。
在编译后的运行时分配变量,此时应该已导入任何导入。
所以这是不可能的。确实最好的解决方案是在字符串中使用FQN并初始化它。
$c = "$user\\$class";
$UserSpecificClass = new $c();