具有动态类名的 PHP 命名空间
2022-08-30 12:01:00
想知道是否有其他人在使用 PHP 5.3 使用命名空间类的新功能时遇到过此问题。
我正在生成一个动态类调用,该调用使用单独的类来定义应用程序中的用户类型。基本上,类定义器采用类型的整数表示形式并解释它们,返回一个字符串,其中包含要作为该用户的模型调用的类名。
我有一个用户类型的对象模型,其名称在全局范围内定义,但我在 Editor 命名空间中为用户的编辑器提供了另一个具有相同名称的对象。由于某种原因,PHP不允许我进行命名空间的动态调用,如下所示。
$definition = Definer::defineProfile($_SESSION['user']->UserType);
new \Editor\$definition();
相同的语法适用于在全局命名空间中调用全局基本对象模型,并且我在整个应用程序中以这种方式可靠地使用它。
$definition = Definer::defineProfile($_SESSION['user']->UserType);
new $definition();
这将正确调用动态所需的类。
是否有原因两者的行为不同,或者由于这是一项新功能,因此尚未在此庄园中实现对命名空间的动态调用?有没有另一种方法可以从另一个命名空间动态调用类,而无需将其名称显式放在代码中,而是从变量中?