Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmienne globalne
tmk
post
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
  1. <?php
  2. global $baza, $username, $user_pass ...;
  3. ?>

jakie z tego moga wynikać zagrożenia?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Prph
post
Post #2





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:

  1. <?php
  2. class Klasa
  3. {
  4. private static $_oInstance;
  5.  
  6. private function __construct()
  7. {
  8. // tu robisz to co w normalnym konstruktorze chcialbys zrobic.
  9. }
  10.  
  11. public function getInstance()
  12. {
  13. if(!isset(self::$_oInstance))
  14. {
  15. $sClassName = __CLASS__;
  16. self::$_oInstance = new $sClassName;
  17. }
  18.  
  19. return self::$_oInstance;
  20. }
  21. }
  22. ?>


Jak widzisz getInstace sprawdza czy obiekt juz istnieje. Jezeli nie: tworzy go i zwraca. Jezeli instnieje: zwraca go.

A jak tego uzywac?

  1. <?php
  2. $obiekt = Klasa(); // zwroci blad!
  3.  
  4. $obiekt = Klasa::getInstance(); // tak jest dobrze
  5. ?>



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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdrawiam.

Ten post edytował Prph 24.05.2006, 17:35:35
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: 12.10.2025 - 21:04