我要問的是,方法在傳遞類時不會傳遞? 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()非對象
這聽起來像一個範圍界定問題。如果你已經將該方法定義爲Public,那麼我希望你的代碼能夠工作,即調用$ variable ['info'] - > getABC()應該返回錯誤以外的結果。順便說一句:最好是發佈更多的代碼,以便其他人可以提供更好的建議,就像看看你是如何定義你的類和方法是很有價值的。 – Craig
@Craig好吧,我會嘗試添加更多的代碼,這只是太多了,我正在深入研究傳入我的內容,它使用'yii framework'給我幾分鐘,我會嘗試添加一些代碼: D – Dora
@Craig我添加了一些代碼:D – Dora