2015-05-30 2 views
5

У меня нет функции функции extract() и переноса переменных. У меня есть метод в пользовательском контроллере, где определенные переменные определены и отправлены в массив функции просмотра в родительском контроллере, где массив извлекается. Затем требуется представление. Но переменные оказываются неопределенными. Содержимое массива может быть напечатано.

Здесь контроллер пользователь с упрощенной функции профиля:

class User extends Controller{ 

    public function profile(){ 

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

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

Переменные передаются в функции представления в родительском контроллере:

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

    extract($variables); 

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

А в представлении, «profile.php ', отображается неопределенная переменная ошибка. Я думал, что функция «extract()» сделает $ profiledetails и $ profilestatus доступными как переменные в представлении. Что я делаю неправильно? Может быть, я использую неправильный тип массива, или я должен использовать переменные переменные или что-то в этом роде (в этом случае, как?).

+2

'extract' хочет ассоциативный массив. –

+0

Это, согласно документам: http://php.net/manual/en/function.extract.php –

ответ

7

extract работает с ассоциативным массивом .

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

* Я думаю * Ты думаешь, или ты это знаешь? – Rizier123

+2

Я имею в виду, я уверен. Позвольте мне изменить это. –

+1

Очень удивительный. Благодаря! – Galivan

Смежные вопросы