PHP:无法调用公共函数

时间:2014-08-22 19:32:30

标签: php function class singleton

我有一个页面dashboard.php,它创建了一个显示商家提交的交易的商家信息中心。我只是试图通过检查交易是否是建议的交易来分离交易类型:

...
while ($deals->have_posts()) : $deals->the_post();
    $suggested_deal = SA_Post_Type::get_instance( $post->ID );
    $boolsuggesteddeal = $suggested_deal->is_suggested_deal();
    ...

然而,is_suggested_deal()行导致页面不显示超过该行的任何内容。

SA_POST_TYPE类概述如下:

class SA_Post_Type extends Group_Buying_Deal {

...

public static function get_instance( $id = 0 ) {
    if ( !$id ) {
        return NULL;
    }
    if ( !isset( self::$instances[$id] ) || !self::$instances[$id] instanceof self ) {
        self::$instances[$id] = new self( $id );
    }
    if ( self::$instances[$id]->post->post_type != parent::POST_TYPE ) {
        return NULL;
    }
    return self::$instances[$id];
}

...

public function is_suggested_deal() {
    $term = array_pop( wp_get_object_terms( $this->get_id(), self::TAX ) );
    return $term->slug == self::TERM_SLUG;
}

...

由于类和函数都是公共的,为什么我无法调用该函数?任何帮助将不胜感激。

编辑:我无法弄清楚如何在不向所有网站用户显示错误的情况下获取错误报告,我在现场网站上。我尝试创建一个SA_Post_Type()实例,但仅此一项导致页面无法在该行之后加载任何内容。

2 个答案:

答案 0 :(得分:0)

你还没有创建类的实例,这样做......

$SA_Post_Type = new SA_Post_Type();

然后您就可以访问该功能......

$boolsuggesteddeal = $SA_Post_Type->is_suggested_deal();

答案 1 :(得分:0)

由于is_suggested_deal不是静态函数,因此必须首先创建SA_Post_Type类的新实例。

$sa_post_type = new SA_Post_Type();
$boolsuggesteddeal = $sa_post_type->is_suggested_deal();

希望这有帮助。