У меня нет функции функции 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 доступными как переменные в представлении. Что я делаю неправильно? Может быть, я использую неправильный тип массива, или я должен использовать переменные переменные или что-то в этом роде (в этом случае, как?).
'extract' хочет ассоциативный массив. –
Это, согласно документам: http://php.net/manual/en/function.extract.php –