我遇到了一个问题,并且认为我的编程方式有任何解决方案。我希望每个人都能理解问题并提供帮助。
我有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");
工作没问题......如何将我的标签替换为类中的功能内容?
答案 0 :(得分:1)
您正在尝试访问该类的不存在字段[作为错误状态]。
当你有一个功能时,你必须调用它:
$replaceContent->{$key}( $content )
这会调用你的Display()
函数,顺便说一句,它应该以小写字母命名,并且应该做的不仅仅是重新调整它的参数。
答案 1 :(得分:1)
您不应将整个部分放入key
变量中。你应该有两个变量,例如:
$functionName = 'Display';
$functionArg = 'testas';
而不是:
$replaceContent->$functionName($functionArg)