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?).
'extract' will ein assoziatives Array. –
Es tut, nach den Dokumenten: http://php.net/manual/en/function.extract.php –