![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
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:
Teraz w index.php mam wywołanie tej klasy i metod:
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. Ten post edytował sadistic_son 5.01.2023, 10:21:38 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
- Brakuje typowania
- jak zwykle nazwy zmiennych z 4 liter przyklady: $request i $this->request przeciez te zmiennej nazywaja sie tak samo a zawieraja zupelnie co innego albo to: $requestString = \explode("?", $request); przeciez explode zwraca tablice a ty zmienna nazwales string, jakby zawierala tekst. - case SUBDOMAIN."add-product": klasa nie powinna miec wiedzy o jakies tam stalej SUBDOMAIN - do GET/POST powinnienies miec oddzielna klase - i nie, unikaj metod statycznych - $this->request = empty($requestString) ? $request : $requestString[0]; explode zawsze zwraca tablice z przynjamniej jednym elementem wiec nigdy nie bedzie puste wiec twoj kod moze wygladac tak: $this->request = $requestString[0]; pomijajac rzecz jasna nazewnictwo o ktorym juzpisalem - no i badz konsekwentny, jak juz uzywasz glownego namespace dla explode, to uzywaj i dla empty czy tam innych metod z glownego namespace |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
- Brakuje typowania Ma być wszędzie? Do każdej zmiennej i metody? To chyba stosunkowo nowe podejście, bo jak zaczynałem przygodę z php w 2006 to wtedy było mówione, że w php tego robić nie trzeba. A przynajmniej tak pamiętam..- jak zwykle nazwy zmiennych z 4 liter Tylko $page, $get i $post mają mniej niż 5 liter (no i $this). To mam te 3 zmienne nazwać inaczej? Nie mówią same za siebie czym są?przyklady: $request i $this->request Nie rozumiem. Jak tworzę private $request; i używam go w metodzie jako parametru, to odwołując się do $this->request odwołuję się do innej zmiennej?przeciez te zmiennej nazywaja sie tak samo a zawieraja zupelnie co innego - $this->request = empty($requestString) ? $request : $requestString[0]; Ok, racja. Przepisałem to żywcem z książki, to widzę, że autor popełnił bubel.explode zawsze zwraca tablice z przynjamniej jednym elementem wiec nigdy nie bedzie puste wiec twoj kod moze wygladac tak: $this->request = $requestString[0]; - case SUBDOMAIN."add-product": Całą tą stonę mam w folderze, powiedzmy 'stronka'. Więc jej adres to localhost/stronka a po przeniesieniu na hosting będzie mójhosting.pl/stronka. Więc skoro korzystam z $_SERVER['REQUEST_URI'] to po wybraniu /add-product $_SERVER[REQUEST_URI'] zawiera /stronka/add-product. Jak inaczej w takim razie miałby wyglądać ten case skoro nie powinienem tam dodać SUBDOMAIN, które ma wartość '/stronka/' ?klasa nie powinna miec wiedzy o jakies tam stalej SUBDOMAIN - do GET/POST powinnienies miec oddzielna klase Dobra, się zrobi.- i nie, unikaj metod statycznych Dlaczego? To zła praktyka? Mam zawsze tworzyć obiekt?A moje pytania 2 i 3 ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 01:22 |