![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 15.04.2004 Skąd: w-wa Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich
robie serwis skladający się z wieleu pod stron, w jednym pliku definiuję sobie zmienne przechowujące dane takie jak: nazwa bazy danych, login, hasło, użytkownik bazy itp. Żeby te dane były dostepnę w funkcjach, potrzebuję zmiennych globalnych. I teraz pytanie, czy byłoby bezpieczne zrobienie tych wszystlich zmiennych jako global? Chodzi mi o
jakie z tego moga wynikać zagrożenia? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, że chcesz wykorzystać zmienne globalne tylko do przerzucenia danych logowania do bazy, wydaje mi się, że nie ma w tym nic niebezpiecznego.
Ja mam takie dwie funkcje do łączenia z bazą i wykonywania zapytania:
-------------------- escape from the execution is futile.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Unikaj zmiennych globalnych jak ognia
![]() Jeśli już potrzebujesz takich informacji, to najlepiej zainteresuj się obiektami i czymś, co nazywa się wzorcem 'singleton' To trochę bezpieczniejsza forma zmiennych globalnych (nawet, jeśli nie chcesz projektowa i programowa obiektowo) -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego unikać zmiennych globalnych jak ognia?
-------------------- escape from the execution is futile.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
A dlaczego zmienne a nie stale?
Rzeczy takie jak nazwa bazy, haslo itp to raczej stale:
W ogole jak na to spojrzec bardziej profesjonalnie, to sa to dane konfiguracyjne. Warto wiec napisac Klase np. Registry i uzywac:
Pozdrawiam. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Należy ich unikac, bo są niebezpieczne dla zdrowia twoich aplikacji (możesz je np. przypadkowo nadpisac i będziesz miał problem).
Prph ma rację - dużo lepszym wyjściem jest użycie stałych lub ja mówiłem singletonów -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
Użycie stałych wygląda rzeczywiście dobrze, a co to są te singletony?
-------------------- escape from the execution is futile.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Singleton to sposob na stworzenie klasy takiej, aby w aplikacji mozna bylo utowrzyc jej tylko jeden obiekt.
Co to znaczy? Ano nie zrobisz $obiekt = new MojaKlasa(); A dlaczego? 1. Kontruktor klasy powinien byc prywatny (powinien, bo jak uzywasz php4, to nie mozesz tego okreslic). 2. Obiekty tworzysz za pomoca innej metody, najczesniej nazwanej getInstance. Przyklad:
Jak widzisz getInstace sprawdza czy obiekt juz istnieje. Jezeli nie: tworzy go i zwraca. Jezeli instnieje: zwraca go. A jak tego uzywac?
Pamietajac, o tym ,ze klasy sa dostepne w kazdym pliku, poniewaz ich nazwy sa globalne, mozesz utworzyc tzw instancje (egzemplarz klasy - obiekt) w dowolnym miejscu.... Oczywiscie jezeli plik z klasa zostal wczesniej dolaczony. O singletonie przeczytasz takze na php.net. PS. Dodam jeszcze, ze ten rodzaj klas stosujesz tak, gdzie nie chcesz aby w aplikacji pojawil sie drugi obiekt tej klasy. Przyklad? Baza danych - jedna baza danych wystarczy w aplikacji. Inny? - cos co steruje aplikacja - jądro - dwa jądra? Hyh tylko u istot zywych ![]() Pozdrawiam. Ten post edytował Prph 24.05.2006, 17:35:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 11:34 |