为什么我不能使用$这是一个开放式帮助器?

时间:2013-08-23 05:47:08

标签: php opencart

我在system/helper/wholesaler.php中有以下辅助函数:

<?php
function is_wholesaler() {
  return $this->customer->getCustomerGroupId() != 1 ? TRUE : FALSE;
}
?>

我在system/startup.php

中加载了帮助器

问题在于,当我尝试使用该函数时,我收到致命错误“致命错误:在不在对象上下文中时使用$ this”。 有没有办法在帮助器中使用$ this?

另一种选择是在is_wholesaler()中将$ this作为参数发送,或在library/customer.php中添加该函数,并在我的opencart模板视图文件中使用$this->customer->is_wholesaler()调用该函数。

2 个答案:

答案 0 :(得分:1)

$this指的是一个对象(类)实例,你不能在个体中使用它,你可以把函数is_wholesaler放到一个类中:

class Helper{
    private $customer;

    public function __construct($customer){
        $this->customer = $customer;
    }

    function is_wholesaler() {
        return $this->customer->getCustomerGroupId() != 1 ? TRUE : FALSE;
    }
}

$customer = new Customer(); //I suppose you have a class named Customer in library/customer.php
$helper = new Helper($customer);
$is_wholesaler = $heler->is_wholesaler();

或者,您只需将其自身修改为is_wholesaler,如下所示:

function is_wholesaler() {
    $customer = new Customer(); //still suppose you have a class named Customer
    return $customer->getCustomerGroupId() != 1 ? TRUE : FALSE;
}

答案 1 :(得分:0)

尝试为object创建Customer,您可以将object用作class

参考
$h = new Customer();
function is_wholesaler() {
    return $h->getCustomerGroupId() != 1 ? TRUE : FALSE;
}

或者您也可以创建参考,如

return Customer::getCustomerGroupId() != 1 ? TRUE : FALSE;