将文本替换为类函数

时间:2014-09-08 09:27:25

标签: php

我遇到了一个问题,并且认为我的编程方式有任何解决方案。我希望每个人都能理解问题并提供帮助。

我有html模板让我们这样说:

<title>{Content~title}</title>
</head>
<body>
    {Content~Display("testas")}
</body>

我有一个名为Content的课程:

class Content {

    public $title = "Test";

    public function __construct(){}

    public function Display($text){
        return $text;
    }       
}

现在,我有一个脚本,它加载类并放入类似的数组:

$this->objects[$class] = new $class(); // in this case: Content class

之后,我尝试通过以下代码替换我的代码{Content~title}和{Content~Indic(&#34; testas&#34;)}:

$replaceContent = $this->objects[$class_name];
$content = str_replace($current,$replaceContent->{$key},$content); // key- Display("testas")

标题(因为它的类属性)运行良好,但是有了函数我带来了错误:

Notice:  Undefined property: Content::$Display("testas") ..

但是,如果我尝试使用:

echo $replaceContent->Display("TEST");

工作没问题......如何将我的标签替换为类中的功能内容?

2 个答案:

答案 0 :(得分:1)

您正在尝试访问该类的不存在字段[作为错误状态]。

当你有一个功能时,你必须调用它:

$replaceContent->{$key}( $content )

这会调用你的Display()函数,顺便说一句,它应该以小写字母命名,并且应该做的不仅仅是重新调整它的参数。

答案 1 :(得分:1)

您不应将整个部分放入key变量中。你应该有两个变量,例如:

$functionName = 'Display';
$functionArg = 'testas';

而不是:

$replaceContent->$functionName($functionArg)