2015-05-30 12 views
5

Ich habe nicht den Hang der extract() - Funktion, und die Übertragung von Variablen. Ich habe eine Methode in einem Benutzer-Controller, wo einige Variablen definiert sind, und in einem Array an eine Ansicht-Funktion in einem übergeordneten Controller gesendet, wo das Array extrahiert wird. Dann ist die Ansicht erforderlich. Aber die Variablen werden undefiniert. Der Array-Inhalt kann jedoch gedruckt werden. Hier

ist der Benutzer-Controller mit einer vereinfachten Profilfunktion:

class User extends Controller{ 

    public function profile(){ 

     $profiledetails = $this->profiledetails();   
     $profilestatus = $this->profileStatus();    

     $this->view('profile', [$profiledetails, $profilestatus]); 
}}  

Die Variablen werden in der View-Funktion in übergeordneter Steuerung gesendet:

class Controller { 
    public function view($view, $variables =[]){      

    extract($variables); 

    require_once './app/views/' . $view . '.php'; 
}} 

Und in der Ansicht, ‚profile.php ', wird der undefinierte Variablenfehler angezeigt. Ich dachte, dass die Funktion "extract()" $ profiledetails und $ profilestatus als Variablen in der Ansicht verfügbar machen würde. Was mache ich falsch? Vielleicht verwende ich die falsche Art von Array, oder ich sollte "Variable Variablen" oder etwas verwenden .. (In diesem Fall, wie?).

+2

'extract' will ein assoziatives Array. –

+0

Es tut, nach den Dokumenten: http://php.net/manual/en/function.extract.php –

Antwort

7

extract arbeitet mit einem assoziativen Array.

$this->view('profile', 
     [ 
     'profiledetails' => $profiledetails, 
     'profilestatus' => $profilestatus 
     ]); 
+0

* Ich denke * Sie denken, oder Sie wissen es? – Rizier123

+2

Ich meine, ich bin mir sicher. Lass mich das bearbeiten. –

+1

Sehr fantastisch. Vielen Dank! – Galivan

Verwandte Themen