Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] klasa php + pdo
jol.us_
post
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


Witam,

Mam pytanie. Jak wcielić zapytania PDO do własnej klasy. Jak to jest realizowane.
Czy takie używanie jak poniżej jest poprawne, czy realizuje się to inaczej?

  1. <?php
  2. class Strona {
  3. public $url;
  4.  
  5. public function PobierzMetaTagi() {
  6. try {
  7. $db = new PDO('mysql:host='.DB_HOST.';dbname='.DB.';charset=utf8', DB_USER, DB_PASS);
  8. $db->exec("set names utf8");
  9.  
  10. $wynik = $db->prepare("SELECT title, description, keywords FROM ".DB_PREFIX."strony WHERE url=:url LIMIT 1");
  11. $wynik -> execute(array(
  12. ':url'=>$this->url
  13. ));
  14. $rekord = $wynik->fetch(PDO::FETCH_ASSOC);
  15.  
  16. print '<title>'.$rekord['title'].'</title>';
  17. print '<meta name="description" content="'.$rekord['description'].'" />';
  18. print '<meta name="keywords" content="'.$rekord['keywords'].'" />';
  19.  
  20. $db = null;
  21.  
  22. } catch (PDOException $e) {
  23. throw new Exception('Could not connect to database');
  24. }
  25. }
  26. }
  27. ?>



Moje wątpliwości głównie są takie, że przy takim użyciu w każdej funkcji muszę łączyć się z baza. Mało to wygodne.
Może lepiej nawiązać połączenie w ciele strony i przekazać do klasy ma zasadzie "$strona->db = $db"?
A może jeszcze inaczej?

Ten post edytował jol.us_ 20.02.2016, 21:24:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jol.us_
post
Post #2





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


A takie rozwiązanie jest ok?

klasa
  1. class Strona {
  2. private $url;
  3. private $db;
  4.  
  5. public function __construct($url, $db) {
  6. $this->_url = $url;
  7. $this->_db = $db;
  8. }
  9.  
  10. public function PobierzMetaTagi() {
  11.  
  12. $wynik = $this->_db ->prepare("SELECT title, description, keywords, robots FROM ".DB_PREFIX."strony WHERE url=:url LIMIT 1");
  13. $wynik -> execute(array(
  14. ':url'=>$this->_url
  15. ));
  16. $rekord = $wynik->fetch(PDO::FETCH_ASSOC);
  17.  
  18. print '<title>'.$rekord['title'].'</title>';
  19. print '<meta name="description" content="'.$rekord['description'].'" />';
  20. print '<meta name="keywords" content="'.$rekord['keywords'].'" />';
  21. print '<meta name="robots" content="'.$rekord['robots'].'" />';
  22.  
  23. }
  24. }


wywolanie
  1. try {
  2. $db = new PDO('mysql:host='.DB_HOST.';dbname='.DB.';charset=utf8', DB_USER, DB_PASS);
  3. $db->exec("set names utf8");
  4. } catch (PDOException $e) {
  5. throw new Exception('Could not connect to database');
  6. }
  7.  
  8. $strona = new Strona('url', $db);
  9. $strona->PobierzMetaTagi();



Zaczynam dopiero z PHP obiektowo i trochę kombinuje po omacku.
Pełno jest tutków w sieci na temat programowania obiektowego, ale takiego z uzyciem PDO to nie znalazlem.

Ten post edytował jol.us_ 20.02.2016, 21:55:43
Go to the top of the page
+Quote Post

Posty w temacie


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: 28.12.2025 - 19:30