Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Początki programowania obiektowego.
Forum PHP.pl > Forum > PHP
BuldogPro
zaczynam programować obiektowo stworzyłem sobie na początek połączenie. jeśli możecie powiedzcie czy w dobrą stronę zmierzam z programowaniem obiektowym. Tak wygląda mój kod
  1. <?php
  2. class baza {
  3. var $dblink;
  4. var $host = "localhost";
  5. var $user = "root";
  6. var $pw;
  7. var $db;
  8. function __construct() {
  9. global $host,$user,$pw,$db;
  10.  
  11. $this->host = $host;
  12. $this->user = $user;
  13. $this->pw = $pw;
  14. $this->db = $db;
  15. }
  16. public function connect() {
  17. $this->dblink = @mysql_connect($this->host,$this->user,$this->pw) or die("Error!! You can not connect!");
  18. @mysql_select_db($this->db,$this->dblink) or die("Error! You can not select datebase!");
  19. }
  20.  
  21. }
  22. ?>
thek
Coś takiego jak global nie powinno być nawet w użyciu. Konstruktor może mieć parametry, więc ich używaj do przekazania klasie czegoś. Gdzie masz specyfikator dostępu danych (private, public)? Skąd var wytrzasnąłeś? Dlaczego wygłuszasz błędy poprzez @ zamiast je obsłużyć? Jeśli już robisz construct to czemu zapominasz o destruct? Jeśli już tworze obiekt klasy baza to chcę mieć od razu po jego utworzeniu możliwość działań bez konieczności łączenia, więc wszelkie wariacje z connect() nie powinny mieć miejsca. Inna sprawa, że kompletnie olewasz choćby port połączenia. Nie zawsze jest to domyślny 3306. Chcesz to robić tylko "pod siebie" czy może ma to być bardziej skalowalne? Ja bym nieco więcej informacji zamieszczał. Choćby jedno pole o nazwie $error, które zwracałoby ostatni komunikat błędu z bazy danych. Po prostu byłoby to bardziej rozbudowane smile.gif
BuldogPro
czyli tak już lepiej?

  1. class baza {
  2. protected $pw;
  3. protected $host;
  4. protected $db;
  5. protected $user;
  6. protected $dblink;
  7. function __construct($host, $user, $pw, $db) {
  8. $this->host = $host;
  9. $this->user = $user;
  10. $this->pw = $pw;
  11. $this->db=$db;
  12. $this->dblink = mysql_connect($this->host,$this->user,$this->pw) or die("Error!! You can not connect!");
  13. mysql_select_db($this->db,$this->dblink) or die("Error! You can not select datebase!");
  14. }
  15. public function __destruct() {
  16. mysql_close($this->dblink);
  17. }
  18. }

i wywołanie
  1. <?php $baza= new baza($host, $user, $pw, $db); ?>
Crozin
Dlaczego wszyscy zaczynają zabawę z OOP od robienia czegoś do "obsługi" połączenia z bazą danych?
Zacznij od przejrzenia co PHP udostępnia właściwie w standardzie - tak, chodzi o PDO - tego używaj do komunikacji z bazą danych.

A dla nauki to sobie zrób coś prostszego (tak, napisanie dobrego sterownika dla bazy danych nie jest łatwym zadaniem) jak np. prosta strona oparta na implementacji MVC (lub którejkolwiek z wariacji tego wzorca) - przy okazji w praniu powinieneś poznać kilka przydatnych wzorców projektowych.

Cytat
eśli już robisz construct to czemu zapominasz o destruct?
A co to... jak jest konstruktor to musi być destruktor? smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.