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%)
-----


Dziękuję za zainteresowanie moim problemem - już tłumaczę (IMG:style_emoticons/default/smile.gif)

Cytat
Skoro masz pętle switch i w danym momencie przeglądasz userów, czyli includujesz display_users...
To po co ci używać tych zmiennych na podstronie about?

Głównie chodzi o to, aby zaoszczędzić sobie pisania w każdym pliku tego samego fragmentu kodu. Na przykład sesja. Obiekt reprezentujący sesję chciałbym utworzyć/powołać do życia tylko raz (w pliku index.php):
  1. // Plik: index.php
  2.  
  3. // Połączenie z bazą danych
  4.  
  5. // Inicjalizacja sesji
  6. // Session object.
  7. $session = new Session($db);
  8.  
  9. // Session.
  10. if( !$session->created() )
  11. $session->create();
  12.  
  13. $session->initialization();
  14.  
  15. if( !$session->isGuest() )
  16. $session->update();
  17.  
  18. // ...
  19.  
  20. $site = $_GET['s'];
  21. switch($site)
  22. {
  23. //...
  24. }

Utworzyć tylko raz, ale posługiwać się nim chciałbym np. w pliku display_users.php
  1. // Plik: display_users.php
  2.  
  3. if( $session->something() ) // `$session` - obiekt, który został powołany do życia w pliku index.php
  4. {
  5. //...
  6. }

Powiedzmy, że część profilu użytkownika jest dostępna tylko dla zalogowanych - wtedy będzie mi potrzebna sesja w pliku display_users.php (IMG:style_emoticons/default/smile.gif)

Cytat
A jeśli chcesz używać ich w plikach które nie przechodzą przez index(...)

Nie no - to jest nie logiczne i bezsensu (IMG:style_emoticons/default/smile.gif) Tak robić NIE chcę (IMG:style_emoticons/default/smile.gif)

Cytat
Ogólnie najlepszym przykładem dla ciebie będzie CMS PHP FUSION(...)

Przeglądałem PHPBB - tam wszędzie używają global, ale luknę do PHP FUSION (IMG:style_emoticons/default/smile.gif)

Mam nadzieję, że rozjaśniłem trochę (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(404 @ 2.01.2012, 21:42:03 ) *
Przeglądałem PHPBB - tam wszędzie używają global, ale luknę do PHP FUSION (IMG:style_emoticons/default/smile.gif)


Tam też wszędzie używają global - normalna praktyka w przypadku średnich lotów cmsów proceduralnych. Żeby nie używać globala musiałbyś za każdym razem przekazywać zmienną jako argument. Jak w przypadku jednej funkcji może wyglądać to nie za ciekawie, tak w przypadku obiektów, wygląda to znacznie lepiej.

Odnośnie include czy require, IMO tylko require. Wolę żeby aplikacja przestała działać, niż ma działać z jakimiś błędami (brak szablonu itp).
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: 14.10.2025 - 02:20