Php 使用变量作为名称空间
在另一个文件中(Php 使用变量作为名称空间,php,class,namespaces,using,Php,Class,Namespaces,Using,在另一个文件中(someusername\classes\MyClass),我有 我偶然发现了一个恼人的小障碍: <?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 E
someusername\classes\MyClass
),我有
我偶然发现了一个恼人的小障碍:
<?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();
?>
我可以通过以下方法来解决这个问题,但是use语句会让事情变得更好
<?php
$user = "someusername";
$class = "MyClass";
require_once "$user\\classes\\$class";
$c = "$user\\$class";
$UserSpecificClass = new $c();
?>
是否可以在PHP中的
use
语句中使用变量?或者用这种方法避免使用use语句更好吗?导入是在编译时执行的
分配变量是在编译后的运行时完成的,此时应该已经导入任何导入
所以这是不可能的。最好的解决方案确实是在字符串中使用FQN并初始化它
$c = "$user\\$class";
$UserSpecificClass = new $c();
如果不缩短或重命名namespace+类并使代码更清晰,那么它的用途是什么?您的代码永远不会清晰,您可以将整个namespace+类保留在一个变量中。
$c = "$user\\$class";
$UserSpecificClass = new $c();