2013-08-02 229 views
1

我有這個類,它多件事情,但是這是它的一個簡化版本,所以你可以看到我的問題是什麼:範圍的變量

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。

編輯:

我曾與問題的變量的名稱拼寫錯誤,但是這不是我的代碼的問題。

回答

3

訪問成員變量是這樣的:

$this->cliente_c 

這樣的:$this->$cliente_c

+1

謝謝,我對這個$符號失明瞭,而且我瘋了。 –

+1

+1 well spotted –

1

您clientPrice彷彿回到cliente_c和你的另一調用返回cliente_a。這些很可能是不同

$aum=$this->$cliente_c; 

shoudl是要麼

$aum=$this->cliente_c; 

$aum=$this->cliente_a; 
0

功能clientPrice回報$this->cliente_c,因此是不一樣的$_product->cliente_a

+0

我們不知道'WC_Product'裏面有什麼 – DanFromGermany

+0

是的,我知道這是一個錯字。我有三個變量,cliente_a b和c,爲了簡單起見,我複製和粘貼了,因爲我必須根據$ c內部的內容設置不同的值,但所有三個變量基本相同。 –

+0

另外WC_Product是另一個Woocommerce類,他們都有多種方法,這只是我自己添加的部分。 –