php类中变量的范围

时间:2013-08-02 07:49:53

标签: php class

我有这个类,它做了很多事情,但这是它的简化版本,所以你可以看到我的问题是什么:

class WC_Product_Variation extends WC_Product {

    public $cliente_a="";

    public function __construct( $variation, $args = array() ) {

        //does some stuff to other variables

        if ( isset( $this->product_custom_fields['_cliente_a'][0] ) ) {
            $this->variation_has_cliente_a = true;
            $this->cliente_a               = $this->product_custom_fields['_cliente_a'][0];
        }
    }
    public function clientPrice($c){
        $aum=0;
        if($c=='customer'){$aum=$this->$cliente_a;}
        /*This should do more stuff but since 
        the basics aren't working I simplified to this*/
        return $aum;
    }
}

这个类来自Woocommerce,如果它改变了什么,我在wordpress中使用它,但基本上我正在做的是:

 echo $_product->clientPrice('customer');

并且不会返回任何内容,甚至不会返回0.此外,如果我这样做

 echo $_product->cliente_a;

我得到了正确的值,即20 wtf?

编辑:

我在问题中输入了变量名称,但这不是我代码中的问题。

3 个答案:

答案 0 :(得分:3)

像这样访问成员变量:

$this->cliente_c

$this->$cliente_c

答案 1 :(得分:1)

您的clientPrice似乎返回cliente_c,而您的另一个调用返回cliente_a。那些很可能是不同的

 $aum=$this->$cliente_c;

shoudl要么是

$aum=$this->cliente_c;

$aum=$this->cliente_a;

答案 2 :(得分:0)

函数clientPrice返回$this->cliente_c,因此与$_product->cliente_a

不同