Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]DB class
ShaggyAG
post 2.11.2014, 14:13:17
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 11
Dołączył: 12.10.2014
Skąd: Tarnów

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


Witam,
W tutorialu, z którego ostatnio korzystałem była klasa do obsługi bazy danych
oto ona:
  1. class DB {
  2. private static $instance;
  3. private $MySQLi;
  4.  
  5. private function __construct(array $dbOptions){
  6.  
  7. $this->MySQLi = @ new mysqli( $dbOptions['db_host'],
  8. $dbOptions['db_user'],
  9. $dbOptions['db_pass'],
  10. $dbOptions['db_name'] );
  11.  
  12. if (mysqli_connect_errno()) {
  13. throw new Exception('Database error.');
  14. }
  15.  
  16. $this->MySQLi->set_charset("utf8");
  17. }
  18.  
  19. public static function init(array $dbOptions){
  20. if(self::$instance instanceof self){
  21. return false;
  22. }
  23.  
  24. self::$instance = new self($dbOptions);
  25. }
  26.  
  27. public static function getMySQLiObject(){
  28. return self::$instance->MySQLi;
  29. }
  30.  
  31. public static function query($q){
  32. return self::$instance->MySQLi->query($q);
  33. }
  34.  
  35. public static function esc($str){
  36. return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str));
  37. }
  38. }

No i niestety nie do końca jestem w stanie ją zrozumieć.
Problematyczne jest dla mnie
  1. public static function init(array $dbOptions){
  2. if(self::$instance instanceof self){
  3. return false;
  4. }
  5.  
  6. self::$instance = new self($dbOptions);
  7. }

czemu to służy?
Czy w ogóle zasadne jest używanie takiej klasy?

Pozdrawiam
Go to the top of the page
+Quote Post
Pyton_000
post 2.11.2014, 16:19:56
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


To miał być chyba singleton ale coś nie wyszło.

init ma za zadanie zainicjować statyczną metodę obiektem własnej klasy. return false zapobiega ponownej inicjalizacji.

Go to the top of the page
+Quote Post
ShaggyAG
post 2.11.2014, 17:14:25
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 11
Dołączył: 12.10.2014
Skąd: Tarnów

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


po co takie zabezpieczenie?
Przed czym to ma mnie chronić?
Go to the top of the page
+Quote Post
nospor
post 2.11.2014, 17:25:36
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poczytaj o SINGLETON a sie dowiesz.

Zadaniem singletonu jest zwracanie zawsze tylko jednej instancji obiektu danej klasy. Czemu to ma sluzyc? Bys nie na tworzył 50ciu obiektow bazy danych.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 06:35