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

时间:2011-04-07 06:18:24

标签: php class semantics

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

public static function nav( ) {
    $temp = config::theme;

    return eval( $temp . "::navigation" );
}

输出错误:

  

解析错误:语法错误,意外   $ end in   C:\收存箱\ Colzdragon \ Colzdragon \网站\内部\ theme.php(54)   :第1行的eval()代码

有没有办法做到这一点?谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用PHP 5.3执行此操作。请参阅this manual page上的第一个示例:

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

答案 1 :(得分:0)

你的代码工作得很好(据我所知)PHP告诉你错过了};或某处的引用。

从字面上说它说:“我一直读到文件的结尾,但还有未完成的语法业务”

答案 2 :(得分:0)

如果您可以访问PHP 5.3,则

@Sander's answer有效。如果您使用较旧的版本(因为许多廉价主机似乎还没有5.3),您可以使用constant()

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