Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> index.php - switch i powtarzający się kod., Jak proponujecie wybrnąć z sytuacji.
tdr
post
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
 
Start new topic
Odpowiedzi (1 - 5)
wujek2009
post
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
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.
Go to the top of the page
+Quote Post
tdr
post
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 (IMG:style_emoticons/default/smile.gif) Jeszcze raz dziękuję (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Dejmien_85
post
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. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
tdr
post
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. (IMG:style_emoticons/default/wink.gif)


Dziękuję (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 00:59