尽管属性已定义

时间:2016-05-16 16:04:12

标签: php class

我有一个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;

}

0 个答案:

没有答案