Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: połączenie z bazą w metodzie statycznej ?
Forum PHP.pl > Forum > PHP > Object-oriented programming
MitS
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) ?
marcio
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. ?>
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.