我有一个PHP函数,可以为FAQ部分注册问题。这个想法是允许添加问题以及它们涵盖的内容,而不是必须将它们全部捆绑在一个地方。
global $faq;
$faq = new ABB_FAQ();
function abb_register_question($id, $title, $callback){
global $faq;
$faq->questions[$id] = array(
'id' => $id,
'title' => $title,
'callback' => $callback
);
}
要显示常见问题,我只需调用以下功能即可。 $for_readme
参数是一个开关,告诉代码是否格式化自述文件的问题 -
function abb_do_faq($for_readme = false){
global $faq;
$faq->do_faq($for_readme);
}
现在我们在ABB_FAQ
对象内部完成剩下的工作。如下所示,ABB_FAQ::do_faq()
做的第一件事就是设置$for_readme
属性。但是,当我加载页面时,我遇到了以下通知 -
未定义的属性:XXX_中的ABB_FAQ :: $ for_readme
我怀疑这种情况正在发生,因为我传递给abb_register_question()
的回调函数包含对ABB_FAQ
类中方法的调用,并且回调已注册在之前我设置了ABB_FAQ :: $ for_readme。
所以我的问题是双重的;我的假设是为什么这是正确的,如果是的话,我能做些什么呢?
public function do_faq($for_readme = false){
$this->for_readme = $for_readme;
if(!empty($this->questions)) : foreach($this->questions as $question):
echo $this->get_question($question);
endforeach;
endif;
}
function get_question($question){
$title = $this->get_question_title();
$content = call_user_func_array($question['callback'], array($question['id']));
return $title . $content;
}