Przerobiłem na własne potrzeby kod z ksiązki ale nie do końca rozumiem, czy robię to logicznie. Generalnie to kod działa, ale sądzę, że mam tam zbędne kawałki. dodatkowo pytanie - czy to w ogóle tak powinno wyglądać?
klasa PageDisplay:
namespace nameOne; class PageDisplay { private $request; private $post; private $get; public function __construct($request) { } public function processRequest() { if (!$this->request) { return; } $this->post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $this->get = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING); switch ($this->request) { case "/": $title = 'Product List'; $pageContent = "ProductList"; include("ProductList.php"); break; case SUBDOMAIN."add-product": $title = 'Product Add'; $pageContent = "ProductAdd"; include("ProductAdd.php"); break; case "/mass_delete": //metoda massDelete break; case "/save": //metoda save new product break; default: $title = 'Product List'; $pageContent = "ProductList"; include("ProductList.php"); break; } $this->displayHeader($title); require('views/' . $pageContent . '.view.php'); $this->displayFooter(); } private function displayHeader($title) { require_once("views/html/header.html"); } private function displayFooter() { require_once("views/html/footer.html"); } }
Teraz w index.php mam wywołanie tej klasy i metod:
include("PageDisplay.php"); $page = new PageDisplay($_SERVER['REQUEST_URI']); $page->processRequest();
Moje pytania.
1. Uważam, że obiekt klasy PageDisplay jest zbędny. Skoro odwołuję się tylko do jej metod to przerobiłbym processRequest() , displayHeader($title) oraz displayFooter() na metody statyczne i w index.php odwoływałbym się do PageDisplay::processRequest Ma to sens?
2. Czy w $page = new PageDisplay($_SERVER['REQUEST_URI']); powinienem jako paramert podać właśnie REQUEST_URI? Właściwie tylko to działa....
3. Jak mam się odwoływać do $_POST czy $_GET w reszcie kodu ? No bo już nie tradycyjnie if(isset($POST['add'])){ //add(); } skoro mamy taki zapis $this->post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
Trochę się w tym pogubiłem i potrzebuję naprowadzenia. Dzięki z góry.