Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Początki programowania obiektowego.
BuldogPro
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.01.2010

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


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


Ten post edytował BuldogPro 23.01.2010, 22:04:20
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
BuldogPro
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.01.2010

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


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); ?>


Ten post edytował BuldogPro 23.01.2010, 22:48:39
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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? (IMG:style_emoticons/default/smile.gif)

Ten post edytował Crozin 23.01.2010, 23:06:09
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 5.10.2025 - 20:18