Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Klasy, obikety i baza
#1
Witam,
bawię się teraz klasami oraz obiektami i stworzyłem sobie taką przykładową klasę połączenia z bazą i z jakąś akcje. Wszystko działa, ale chciałem prosić o ocenę tej klasy, w celu wyeliminowania jakichś błędów:

Kod PHP:
<?php
class actionDB{
    private 
$host 'localhost';
    private 
$user 'user';
    private 
$passowrd 'password';
    private 
$datebase 'db';
    private 
$action;
    private 
$result;
    
    public function 
connect()
    {
        
$db mysql_connect($this->host$this->user$this->passowrd) or die('Błąd połączenia z bazą: '.mysql_error());
        
mysql_select_db($this->datebase);
        return 
$db;
    }
    
    public function 
question()
    {
        
$this->result mysql_query($this->action);    
    }
    
    public function 
close($db)
    {
        
$close mysql_close($db);
        return 
$close;
    }
    
    public function 
setAction($set)
    {
        
$this->action $set;
    }
    
    public function 
getAction()
    {
        return 
$this->action;    
    }
    
    public function 
getResult()
    {
        return 
$this->result;    
    }
}
?>

Działa to tak, że łączymy się z bazą, później ustawiamy zmienną $action, która jest odpowiedzialna za akcje w bazie, wykonujemy akcje i zwracamy $result i z tą zmienną możemy sobie robić coś tam dalej, a na koniec zamykamy Smile
Co do akcji to można byłoby dla każdej stworzyć inną funkcję lub nową klasę, która by dziedziczyła po tej... Dobrze myślę?
Odpowiedz
#2
Jaki ma sens tworzenie klasy gdzie używasz mysql_query? Od tego jest PDO. Druga kwestia, patrz punkt 2 poniżej. Tego nie powinieneś ładować w klasę, tylko traktować jako zestaw funkcji.

Co do samego kodu:
1. Zmienne konfiguracyjne powinni być umieszczone w innym pliku. Jeśli już chcesz w tym samym, powinny być zadeklarowane jako protected $host, etc.
2. A gdzie obsługa błędów, wyjątki?
Odpowiedz
#3
Trochę bez sensu...

1. Nie widzę tu Singletona więc i łączysz się z BD zawsze i wszędzie zazwyczaj po kilka razy w projekcie. -> czytaj: wzorzec Singleton
2. Tak jak kolega napisał wyżej, brak obsługi błędów i wyjątków.
3. Jeśli chodzi o mnie to ja bym już używał "obiektowej" wersji czyli mysqli -> czytaj: mysqli.
Odpowiedz
#4
Ale to nie do żadnego projektu, tylko w ramach ćwiczeń Smile Ale dzięki za uwagi przydadzą się w przyszłości Smile Pedro napisał, że nie mam sensu tworzenia klasy, czyli w projektach nie tworzy się klasy do łączenia z bazą? W nocy przeczytałem książkę i tam stworzyli klasę abstrakcyjną i to jakoś miało działać tak, że łączymy się z bazą tylko raz.
Odpowiedz
#5
(02-04-2011, 22:09)Marys napisał(a): Ale to nie do żadnego projektu, tylko w ramach ćwiczeń Smile Ale dzięki za uwagi przydadzą się w przyszłości Smile Pedro napisał, że nie mam sensu tworzenia klasy, czyli w projektach nie tworzy się klasy do łączenia z bazą? W nocy przeczytałem książkę i tam stworzyli klasę abstrakcyjną i to jakoś miało działać tak, że łączymy się z bazą tylko raz.
Nie zrozumiałeś mnie. Twój kod ma wspólnego z klasą tylko i wyłącznie słówko "class". Poczytaj o wzorcach projektowych, obsłudze błędów i wyjątków.
Odpowiedz
#6
Możesz stworzyć, ale nie musisz bo są już gotowe jak PDO do obsługi bazy danych.

Czy jest sens? Ja np. w swoich aplikacjach kiedyś dołączałem, ale potem przyszedł czas na Symfony i Yii.

"W nocy przeczytałem książkę i tam stworzyli klasę abstrakcyjną i to jakoś miało działać tak, że łączymy się z bazą tylko raz. " -> o tym jest właśnie wzorzec Singleton.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  cron nie łączy się z bazą danych michalszyd 3 5,004 18-01-2018, 06:15
Ostatni post: ytprzetwornik
  [MYSQL] Problem z połączeniem z bazą. justdanek 0 2,017 29-04-2013, 19:08
Ostatni post: justdanek
  Problem z połączeniem z bazą mysql kuwawrzyn 3 3,141 30-11-2011, 12:44
Ostatni post: uriziel01
  Duże pliki a baza danych Marys 5 4,306 22-11-2011, 15:08
Ostatni post: KowR
  problem z baza dnaych z wgraniem waito 3 2,651 17-11-2011, 22:17
Ostatni post: mybisnes

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl