Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Klasy, obikety i baza - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: Klasy, obikety i baza (/thread-klasy-obikety-i-baza)



Klasy, obikety i baza - Marys - 02-04-2011

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ę?


RE: Klasy, obikety i baza - Pedro84 - 02-04-2011

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?


RE: Klasy, obikety i baza - KowR - 02-04-2011

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.


RE: Klasy, obikety i baza - Marys - 02-04-2011

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.


RE: Klasy, obikety i baza - Pedro84 - 02-04-2011

(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.


RE: Klasy, obikety i baza - KowR - 02-04-2011

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.