2016-10-09 6 views
2

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

+0

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

+0

@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

+0

@Craig Ich habe einige Codes hinzugefügt: D – Dora

Antwort

0

Ja. Es soll funktionieren. Wenn in der Funktion, die der Ansicht Variablen zuweist, Desinfektionscode vorhanden ist, könnte das Objekt in ein Array konvertiert werden.

Verwandte Themen