Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> index.php - switch i powtarzający się kod., Jak proponujecie wybrnąć z sytuacji.
tdr
post 1.06.2013, 11:09:18
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.02.2013

Ostrzeżenie: (0%)
-----


Cześć!

Jestem w trakcie nauki php-a i tworze właśnie plik index.php. Jednak już na tym etapie natknąłem się na problem powtarza się kodu... Problem jest może i banalny ale chciałbym wiedzieć jak Wy sobie radzicie w takich przypadkach. Jedyny pomysł, który przyszedł mi do głowy to użyć:
Kod
$gowna = <<<PL
$url = 'strony/glowna.php';
$title = "Bez switch: Strona główna";
$description = "Opis: Default - strona główna";
PL;
Jednak z przyjemnością posłucham Waszych sugestii.

Kod
<?php

if(isset($_GET['strona'])){
    switch($_GET['strona']){
        case 'kontakt':
            $url = 'strony/kontakt.php';
            $title = "Tytuł: Dział kontakt";
            $description = "Opis: Opis podstrony działu kontakt";
        break;
        
        default:
            $url = 'strony/glowna.php';
            $title = "Default: Strona główna";
            $description = "Opis: Default - strona główna";
    }
}else{
    $url = 'strony/glowna.php';
    $title = "Bez switch: Strona główna";
    $description = "Opis: Default - strona główna";
}

    include "templates/header.php";
    include $url;
    include "templates/footer.php";


?>



Go to the top of the page
+Quote Post
wujek2009
post 1.06.2013, 19:13:08
Post #2





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


Może tablice?
  1. $pages = array(
  2. 'index' => array('title' => 'Strona główna', 'description' => 'Opis..', 'file' => 'strony/index.php'),
  3. 'omnie' => array('title' => 'O mnie', 'description' => 'Jakis opis', 'file' => 'strony/omnie.php'),
  4. 'kontakt' => array('title' => 'Kontakt', 'description' => 'Skontaktuj sie ze mna', 'file' => 'strony/kontakt.php'),
  5. // itd
  6. );
  7.  
  8. $page_id = isset($_GET['strona']) ? $_GET['strona'] : 'index';
  9.  
  10. if ( array_key_exists($page_id, $pages) )
  11. {
  12. include "templates/header.php";
  13.  
  14. // teraz nowy kod:
  15. $title = $pages[$page_id]['title'];
  16. $description = $pages[$page_id]['description'];
  17. include_once $pages[$page_id]['file'];
  18.  
  19. include "templates/footer.php";
  20. }
  21. else {
  22. echo 'Wyrzuc mu strone 404 - ze taka podstrona nie istnieje';
  23. }


PS. Pisałem z palca, bez edytora - za literówki w kodzie przepraszam :-)

Ten post edytował wujek2009 1.06.2013, 19:15:07
Go to the top of the page
+Quote Post
Talidali
post 1.06.2013, 19:16:27
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 19
Dołączył: 31.05.2013

Ostrzeżenie: (0%)
-----


tdr, Twój sposób jest optymalny dla małych stron.
Jeśli zamierzasz tworzyć coś większego rozbij to na pliki. Przy generowaniu strony sprawdzaj czy istnieją ustawienia dla bieżącej strony tj. desc, title. Jeśli tego nie ma to wyświetlaj domyślne ustawienia.


--------------------
Szukam pracy za granicą jako FrontendDeveloper - AKTUALNE

forum.php.pl/PoszukujePraca_Frontend_Developer_t218107.html
Go to the top of the page
+Quote Post
tdr
post 2.06.2013, 08:28:36
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.02.2013

Ostrzeżenie: (0%)
-----


Dziękuję Wam koledzy za pomoc później sprawdzę jak to działa i oczywiście napiszę jak temat zakończyłem smile.gif Jeszcze raz dziękuję smile.gif
Go to the top of the page
+Quote Post
Dejmien_85
post 2.06.2013, 09:18:25
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Ze swojej strony mogę dać Ci jedną poradę - jako początkujący zapamiętaj to sobie: Pisz kod tak, aby był otwarty na rozszerzenia bez modyfikacji aktualnego kodu.

Chodzi o to, abyś na samym początku swojego "kontrolera" (index.php) załączył do swojej aplikacji zewnętrzne pliki, które będą już mieć przypisaną logikę, a Twój index.pl ma się tylko do nich odwoływać i wyciągać z nich dane. Oczywiście nie bezpośrednio - wszystko powinno być przykryte warstwą abstrakcji i polimorfizmem, aby zachować elastyczność kodu.

Radzę Ci od razu zająć się programowaniem obiektowym i wzorcami projektowymi (nauczysz się jak unikać powielania kodu i jak wykorzystać abstrakcję). Pisząc kod proceduralnie (tak jak to teraz robisz) będziesz ciągle błądził w wąskim korytarzu - otwórz wrota OOP i wzorców projektowych, a zobaczysz nowy świat i nowe rozwiązania swoich problemów. wink.gif
Go to the top of the page
+Quote Post
tdr
post 2.06.2013, 14:23:59
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.02.2013

Ostrzeżenie: (0%)
-----


Cytat(Dejmien_85 @ 2.06.2013, 10:18:25 ) *
Ze swojej strony mogę dać Ci jedną poradę - jako początkujący zapamiętaj to sobie: Pisz kod tak, aby był otwarty na rozszerzenia bez modyfikacji aktualnego kodu.

Chodzi o to, abyś na samym początku swojego "kontrolera" (index.php) załączył do swojej aplikacji zewnętrzne pliki, które będą już mieć przypisaną logikę, a Twój index.pl ma się tylko do nich odwoływać i wyciągać z nich dane. Oczywiście nie bezpośrednio - wszystko powinno być przykryte warstwą abstrakcji i polimorfizmem, aby zachować elastyczność kodu.

Radzę Ci od razu zająć się programowaniem obiektowym i wzorcami projektowymi (nauczysz się jak unikać powielania kodu i jak wykorzystać abstrakcję). Pisząc kod proceduralnie (tak jak to teraz robisz) będziesz ciągle błądził w wąskim korytarzu - otwórz wrota OOP i wzorców projektowych, a zobaczysz nowy świat i nowe rozwiązania swoich problemów. wink.gif


Dziękuję smile.gif Oczywiście jestem otwarty na różne sugestie. Macie jakieś propozycje kursu, strony, bądź książki która jakoś tak w miarę fajnie opisze niniejsze zagadnienie smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 11:21