![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam taką klasę: Kod class DB extends mysqli{ private static $db; public function connect(){ if(!self::$db){ self::$db = @new mysqli('localhost', 'user', 'pass', 'base'); if(@ self::$db->connect_errno){ throw new Exception('Nie można połączyć się z bazą danych.'); } }else{ return self::$db; } } public function query($zapytanie){ return self::$db->query($zapytanie); } public function prepare($zapytanie){ return self::$db->prepare($zapytanie); } } Używam jej w skrycie logowania. Na początku nie miałem w niej metod query() i prepare(). Kiedy je wywoływałem to nie zwracały obiektu. Dopisałem dwie wyżej wymienione metody i wszystko działa. Czy jednak jest to konieczne, aby tworzyć własne metody, bo przecież moja klasa DB dziedziczy po mysqli? Ten post edytował gcdreak 7.06.2009, 10:29:24 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Za pomocą tego kodu tworzysz 2 połączenia z bazą danych... Oto przykład:
Albo zrób aby DB nie dziedziczyła po mysqli i metody zostaw takie jakie są (instancję mysqli przechowuj w składowej statycznej), albo zostaw dziedziczenie i rozszerzaj metody mysqli. Następnym rozwiązaniem jest ustawienie metody connect jako statycznej (coś na wzór singletonu), aby zwracała instancję klasy DB. Ten post edytował -=Peter=- 7.06.2009, 12:10:43 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wyrzuciłem fragment:
Kod <span class="postcolor">extends mysqli</span> i wszystko działa. Dopisałem jeszcze: Kod public function __destruct(){ self::$db->free; } Czy w destruktorze powinienem też zamknąć połączenie z bazą? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Czy w destruktorze powinienem też zamknąć połączenie z bazą? Skrypt zamyka połączenie samoczynnie przy kończeniu wykonywania skryptu (wyjątek: stałe połączenia, które po prostu zostają dla innych sesji). A w destruktorze? Doświadczałem "dziwnych" rzeczy przy zamykaniu połączeń w destruktorze typu najróżniejsze błędy. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
A co myślisz o zwalnianiu wyników zapytania w destruktorze?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
A co myślisz o zwalnianiu wyników zapytania w destruktorze? Ja przewaznie uzuwam do zamykania plikow chodz te chyba same tez automatyczne sie zamykaja jak w przypadku z baza (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) o ogolnie do niszczenia pol ktore uzylem w danej klasie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niszczenie i zamykanie to jedno, a zwalnianie pamięci to drugie.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Cytat Niszczenie i zamykanie to jedno, a zwalnianie pamięci to drugie. Skoro dla ciebie to to samo to po co pytasz skoro wiesz lepiej. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dla mnie to nie to samo!
|
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Jeśli macie tak się przegadywać cały wątek, to od razu powiedzcie - przynajmniej nie będę musiał czekać, aby ostrzeżenia wlepić. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Albo rzeczowa dyskusja poparta argumentami, albo sobie darujcie... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 22:45 |