Was ich frage ist,Methode wird nicht übergeben, wenn die Klasse übergeben? PHP
sagen wir, ich habe eine Klasse Info
und es gibt einen Getter in der Info-getABC()
In einem Controller rief ich so etwas wie
$info = new Info();
$variable['info'] =$info;
zugewiesen und $variable
wird in die Sicht weitergegeben.
In der Ansicht kann ich etwas wie $variable['info']->getABC()
verwenden? Ich weiß, ich kann es einfach selbst austesten, und gescheitert zu sagen, etwas wie es nicht existierte und $variable['info']
zeigt etwas aber.
Ich möchte nur sicherstellen, dass $variable['info']->getABC()
soll nicht funktionieren oder es sollte, aber ich mache nur etwas falsch, deshalb konnte ich nicht bekommen, was benötigt wird.
eigentlichen Code unten ........
Klasse
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;
}
}
und in-Controller lassen Sie uns sagen, wenn es erfolgreich ist .... es so etwas wie dieses $creditCardPayment = new CreditCardPayment
wo sein werde und ich versuchte var_dump($creditCardPayment)
, dass auf jeden Fall Informationen alle gefüllt ist und natürlich sind diese private
Variablen, so musste ich die getter
abrufen sie verwenden.
-Controller
$ordermess['creditCardPaymentInfo'] = $creditCardPayment;
\Yii::$app->session->set('ordermess', $ordermess);
$this->redirect('/pay/completed');
dann meiner Meinung nach ... Ich tat dies als Test
<?php
echo '<pre>';
echo ($ordermess['creditCardPaymentInfo']->getCardNumberLast4());
echo '</pre>';
die;
?>
dann, wenn ich die Seite lade ich Fehler bekommen würde.
Aufruf an eine Elementfunktion getCardNumberLast4() auf einem Nicht-Objekt
es klingt wie ein Problem mit dem Scoping. Wenn Sie die Methode als Public definiert haben, würde ich erwarten, dass Ihr Code funktioniert, dh der Aufruf von $ variable ['info'] -> getABC() sollte ein anderes Ergebnis als den Fehler zurückgeben. Übrigens: Es ist besser, mehr Code zu posten, damit andere einen besseren Ratschlag geben können, als wäre es nützlich zu sehen, wie Sie Ihre Klasse und Methoden definiert haben. – Craig
@Craig in Ordnung, ich werde versuchen, mehr Codes zu setzen, es ist nur da sind zu viel und ich graben tatsächlich in das, was in mir übergeben wird und es 'yii framework' verwendet, geben Sie mir einige Minuten, und ich werde versuchen, einige Codes einzufügen: D – Dora
@Craig Ich habe einige Codes hinzugefügt: D – Dora