Otóż korzystam z AltoRouter. Mój kod wygląda tak:
// Router $router = new altoRouter(); $view = new view($account, $profile); $router->map('GET', '/', function() use($view){ $view->render('homepage', 'Panel'); });
Stworzyłem obiekt z metodą render, aby nie includować po stokroć plików header oraz footer. Pierwszy string w powyższym kodzie to nazwa pliku jaki ma zostać wczytany, a drugi to tytuł strony. Natomiast klasa wygląda tak:
class view{ public function __construct($account, $profile){ $this->account = $account; $this->profile = $profile; } public function render($page_name, $page_title){ $this->account->isLogged(); require 'views/panel/templates/header.php'; } require 'views/panel/'.$page_name.'.php'; } require 'views/panel/templates/footer.php'; } } }
W docelowej stronie (homepage.php), chcąc uzyskać dostęp do jakiejś zmiennej, muszę wcześniej przekazać ją do metody. I na końcowej stronie wyświetlam ją poprzez $this-> moja zmienna/metoda. Czy to jest dobry sposób czy macie jakieś lepsze rozwiązania? Bo przyznam, że wydaje mi się to dziwne, że muszę przekazywać dużo zmiennych do konstruktora klasy view (w przykładzie ich nie ma, ale w skrypcie to m.in zmienna z bazą danych, kontem, profilem i jeszcze parę innych, które akurat na tej stronie są mi potrzebne)