Nie otrzymałem zawieszenia funkcji extract() i przesyłania zmiennych. Mam metodę w kontroler użytkownika, gdzie niektóre zmienne są zdefiniowane i wysyłane w tablicy do funkcji widoku w kontrolerze nadrzędnej, gdzie tablica jest wyodrębniona. Wtedy widok jest wymagany. Ale zmienne okazują się niezdefiniowane. Zawartość tablicy można wydrukować.
Oto kontroler użytkownika z uproszczoną funkcją profilu:
class User extends Controller{
public function profile(){
$profiledetails = $this->profiledetails();
$profilestatus = $this->profileStatus();
$this->view('profile', [$profiledetails, $profilestatus]);
}}
Zmienne są przesyłane do nadrzędnej funkcji widoku w kontrolerze:
class Controller {
public function view($view, $variables =[]){
extract($variables);
require_once './app/views/' . $view . '.php';
}}
I w widoku „profile.php ", wyświetlany jest niezdefiniowany błąd zmienny. Myślałem, że funkcja "extract()" sprawi, że $ profileedetails i $ profilestatus będą dostępne jako zmienne w widoku. Co robię źle? Być może używam niewłaściwego typu tablicy lub powinienem używać "zmiennych variabe" lub czegoś .. (w takim razie jak?).
'extract' chce tablicę asocjacyjną. –
To, według dokumentów: http://php.net/manual/en/function.extract.php –