Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dzielenie kodu na kilka plików
404
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

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


Witam (IMG:style_emoticons/default/smile.gif)

Od razu przejdę do rzeczy. Buduję stronę internetową. Dla przykładu załóżmy, że mam następujące podstrony:
Kod
http://www.moja-strona.pl/users/jan.kowalski
http://www.moja-strona.pl/projekty/hello.word
http://www.moja-strona.pl/about

Dla każdej podstrony tworzę osoby plik, który ją (tj. stronę) generuje:
Kod
dipslay_users.php
dipslay_projects.php
about.php

O co mi chodzi?
Chciałbym móc zrobić coś takiego:
  1. //Plik: index.php?s=[nazwa_strony]
  2.  
  3. // Połączenie z bazą danych
  4. // Inicjalizacja sesji
  5. // ...
  6.  
  7. $site = $_GET['s'];
  8. switch($site)
  9. {
  10. case 'users': require_once('display_users.php'); break;
  11. case 'projects': require_once('display_projects.php'); break;
  12. case 'about': require_once('display_about.php'); break;
  13. }
  14.  
  15. // Zamknięcie połączenia z bazą
  16. // Itp.

Mówiąc krótko - wszystkie strony mają "przechodzić" przez jeden plik oraz zmiennych użytych w pliku index.php chciałbym móc używać w pozostałych plikach. Czy muszę do tego użyć global, tzn. czy to muszę być zmienne globalne? Czy może ma ktoś inny pomysł? Inną koncepcję? (IMG:style_emoticons/default/smile.gif)

Używam silniczka szablonów (RainTPL) (gdyby komuś ta informacja była potrzebna).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
404
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

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


No jak na złość - kiedy chciałem zrobić malutki test padł mi XAMPP (IMG:style_emoticons/default/tongue.gif) Musiałem zainstalować go ponownie (IMG:style_emoticons/default/tongue.gif) No, ale przynajmniej teraz mam aktualną wersję (IMG:style_emoticons/default/smile.gif)

Wracając do tematu - Twój kod działa - o coś takiego mi chodzi (IMG:style_emoticons/default/smile.gif) Przyznam się bez bicia, że testowałem ten sposób kiedyś jednak z negatywnym rezultatem. Zapewne coś schrzaniłem (IMG:style_emoticons/default/smile.gif)
Pytanie tylko teraz - czy takie rozwiązania się stosuje? Czy są one praktykowane?
Zastanawiam się też - include_once, czy require_once? Wiem, że jedna funkcja wypluwa warning, a druga fatal error. Czy jest jeszcze coś o czym powinienem wiedzieć stosując te funkcje przy takim rozwiązaniu? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
szmerak
post
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Cytat(404 @ 2.01.2012, 23:42:13 ) *
Pytanie tylko teraz - czy takie rozwiązania się stosuje? Czy są one praktykowane?

Podałem ci przykład pliku PHP Fusion z maincore.php, który jest includowany na samej górze prawie każdego pliku w tym CMSie, zawiera on szereg funkcji które są najczęściej używane...
ale przed funkcjami są sprawdzane i ustawiane "w przypadku FUSIONA" stałe... (czy użytkownik zalogowany, konfiguracje itp...), includowane pliki itd.. <- (Tak jak ty chciałeś)
W taki oto sposób wszystkie najważniejsze zmienne są dostępne prawie w każdym pliku...
Tak więc jak najbardziej jest to praktykowane, potwierdza to np Fusion...

Cytat
Zastanawiam się też - include_once, czy require_once? Wiem, że jedna funkcja wypluwa warning, a druga fatal error.

Jak zapewne wiesz są 4 rodzaje funkcji dołączających(includujących).
include, include_once, require, require_once.
include a require różni się tym że w przypadku nie znalezienia pliku, include wypluwa błąd ale skrypt jest wykonywany do końca.
Jeśli chodzi o require to parser wypluwa błąd i skrypt zostaje przerwany w miejscu błędu.(Wolałem to napisać dla późniejszych niejasności)
no i jeszcze jest _once wsumie jak sama nazwa wskazuje "once -> raz" czyli w tłumaczeniu "dołącz ale tylko raz" to znaczy że jeśli plik już był dołączony to funkcja z "_once" jest pomijana.

A teraz require czy include?
Powiem ci to na moim przykładzie.
Wszystkie pliki z niezbędnymi funkcjami, konfiguracją, klasami(np. mysql) bez których strona nie może działać, require.
Mniej ważne pliki includuje. Czyli takie które nie wpłyną tak bardzo na stronę jak brak połączenia MySQL czy inne...

Cytat
Czy jest jeszcze coś o czym powinienem wiedzieć stosując te funkcje przy takim rozwiązaniu?

Tak, ponieważ funkcja include jeśli nie umiejętnie się nią posługujesz ciągnie za sobą pewne zagrożenia typu. File inclusion...
Ale ja nie znam się na tym zabardzo dlatego prosił bym kogoś bardziej wtajemniczonego o wypowiedzenie się w tym temacie.

Pozdrawiam!

Ten post edytował szmerak 3.01.2012, 02:21:46
Go to the top of the page
+Quote Post

Posty w temacie


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: 13.10.2025 - 21:55