Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> połączenie z bazą w metodzie statycznej ?
MitS
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


Witam serdecznie,

mam dość duży problem ze zrobieniem zapytania w metodzie statycznej tzn.
Mam sobie dla przykładu klasy:

  1. <?php
  2.  
  3. class NowaKlasa{
  4.    public static function getData($type){
  5.        $sql = "SELECT * FROM table WHERE type = :type";
  6.        $stmt = $this->_dbh->prepare($sql);
  7.        $stmt->bindParam(':type', $type, PDO::PARAM_STR);
  8.        $stmt->execute();
  9.        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  10.        
  11.        return $result;
  12.    }
  13. }
  14.  
  15. class Control{
  16.    private $_dbh;
  17.    
  18.    public function init(){
  19.        $this->_conect();
  20.        // tu wszystko jest ok, mamy połączenie w objekcie $this->_dbh i wszystko ładnie się wykonuje
  21.        
  22.        NowaKlasa::getData('cos');    // i tu mamy błąd bo nie wiadomo jak uzyskać połączenie w metodzie statycznej :/
  23.    }
  24.    
  25.    private function _conect(){
  26.        $this->_dbh = //... połączenie z bazą
  27.    }
  28. }
  29.  
  30. ?>


Moje pytanie brzmi... jak uzyskać połączenie z bazą w sposób najbardziej wydajny (czyli ta metoda publiczna będzie używana wiele razy w różnych miejscach) ?
Go to the top of the page
+Quote Post
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


HMmm moze:
  1. <?php
  2. class NowaKlasa{
  3.  
  4. static $typ;
  5.  
  6. static function getData($type) {
  7.  
  8.  self::$typ = $type;
  9.  
  10.        $sql = 'SELECT * FROM table WHERE type = '.self::$typ.'';
  11.        $stmt = $this->_dbh->prepare($sql);
  12.        $stmt->bindParam(self::$typ, $type, PDO::PARAM_STR);
  13.        $stmt->execute();
  14.        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  15.        
  16.        return $result;
  17.    }
  18. }
  19.  
  20. //albo
  21.  
  22. class NowaKlasa {
  23.  
  24.  public function __construct($type) {
  25.  
  26.        $sql = 'SELECT * FROM table WHERE type = '.$type.'';
  27.        $stmt = $this->_dbh->prepare($sql);
  28.        $stmt->bindParam($type, $type, PDO::PARAM_STR);
  29.        $stmt->execute();
  30.        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  31.        
  32.        return $result;
  33.    }
  34. }
  35.  
  36. //wtedy dajesz extends dla  klasy kontrol i wywolujesz
  37. $clas = new NowaKlasa('cos');
  38. ?>
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 - 05:41