Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: index.php - switch i powtarzający się kod.
Forum PHP.pl > Forum > PHP
tdr
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";


?>



wujek2009
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 :-)
Talidali
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.
tdr
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
Dejmien_85
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
tdr
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.