2016-10-09 32 views
2

我要問的是,方法在傳遞類時不會傳遞? PHP

比方說,我有一個類Info並有一個名爲getABC()

在控制器I分配類似

$info = new Info(); 

$variable['info'] =$info; 

$variable的信息吸氣正在被傳遞到視圖中。

在視圖中,我能夠使用類似$variable['info']->getABC()的東西嗎? 我知道我可以自己測試一下,但沒有說過它不存在,$variable['info']確實顯示了一些東西。

我只是想確保$variable['info']->getABC()是假設不工作或它應該,但我只是做錯了,這就是爲什麼我不能得到所需的東西。

下面

實際代碼........

class CreditCardPayment{ 

private $_card_type = ''; 
private $_card_number = ''; 
private $_card_number_last_4 = ''; 

public function setCardType($v) 
{ 
    $this->_card_type = $v; 
    return $this; 
} 

public function setCardNumber($v) 
{ 
    $this->_card_number = $v; 
    return $this; 
} 

public function setCardNumberLast4($v) { 
    $lastFourDigits = substr($v, -4); 
    $output = 'xxxx-xxxx-xxxx-' . $lastFourDigits; 
    $this->_card_number_last_4 = $output; 
    return $this; 
} 

public function getCardType() { 
    return $this->_card_type; 
} 

public function getCardNumber() { 
    return $this->_card_number; 
} 

public function getCardNumberLast4() { 
    return $this->_card_number_last_4; 
} 

} 

和控制器讓我們說當它是成功的....這將是這樣的地方$creditCardPayment = new CreditCardPayment和我嘗試var_dump($creditCardPayment),肯定是所有的信息填充,當然這些變量是private,所以我不得不使用getter檢索它們。

控制器

$ordermess['creditCardPaymentInfo'] = $creditCardPayment; 
\Yii::$app->session->set('ordermess', $ordermess); 
$this->redirect('/pay/completed'); 

然後在我看來......我這樣做是爲測試

<?php 
    echo '<pre>'; 
    echo ($ordermess['creditCardPaymentInfo']->getCardNumberLast4()); 
    echo '</pre>'; 
    die; 

?> 

然後當網頁加載完畢後我會得到錯誤。

呼叫一個成員函數getCardNumberLast4()非對象

+0

這聽起來像一個範圍界定問題。如果你已經將該方法定義爲Public,那麼我希望你的代碼能夠工作,即調用$ variable ['info'] - > getABC()應該返回錯誤以外的結果。順便說一句:最好是發佈更多的代碼,以便其他人可以提供更好的建議,就像看看你是如何定義你的類和方法是很有價值的。 – Craig

+0

@Craig好吧,我會嘗試添加更多的代碼,這只是太多了,我正在深入研究傳入我的內容,它使用'yii framework'給我幾分鐘,我會嘗試添加一些代碼: D – Dora

+0

@Craig我添加了一些代碼:D – Dora

回答

0

是上。它應該工作。如果在爲視圖分配變量的函數中存在清理代碼,則可能會將該對象轉換爲數組。