我遇到了一个php类语义难题


I've run into a php class semantics conundrum

我有两个类,其中一个是配置类。在这个类中,我有一个名为"theme"的变量。这被称为config::theme。我有另一个类,但我不能确定的名称,因为它的主题依赖。例如,如果PHP站点主题设置为"nebula",我需要访问星云主题,例如:nebula::navigation。我到过的最远的地方是:

public static function nav( ) {
    $temp = config::theme;
    return eval( $temp . "::navigation" );
}

输出错误:

解析错误:语法错误,出乎意料结束美元C: '网站Dropbox ' Colzdragon ' Colzdragon ' '内部' theme.php (54): eval()'d代码在第一行

有什么办法可以做到吗?谢谢!

您可以使用PHP 5.3完成此操作。参见本手册页的第一个示例:

public static function nav() {
    $theme = config::$theme;
    return $theme::$navigation;
}

你的代码工作得很好(据我所知)PHP告诉你你错过了一个},一个;或一个引号。

字面意思是:"我已经读到文件的末尾,但是还有未完成的语法业务"

@Sander的答案适用于PHP 5.3。如果您使用旧版本(因为许多便宜的主机似乎还没有5.3),您可以使用constant():

constant(get_class($temp)."::navigation");