dakata__92
Super Moderator
Колеги, имам един PDO клас от фрийма на гатака. Колегата терорист ме подсети за една моя идея но немога да се справя нещо. Искам да препиша класът PDO използващ PDO на MySQLi клас изпозващ MySQLi конекция. Проблема е че желая да се запазят имената на методите за да мога да ги ползвам като имплементиране на интерфейс. Проблема ми, е че немога да се ориентирам и справя с преписването на функциите от PDO на MySQLi.
PHP:
namespace system\DB;
class PDO{
private $className = null;
private $opt = array();
private $db = null;
private $stmt = null;
private $params = array();
private $sql;
public function __construct($host,$user,$pass,$name){
$this->className = str_replace(__NAMESPACE__ . "\\", "", __CLASS__);
$this->opt = $this->options('DB/'.$this->className);
$this->db = new \PDO("mysql:host={$host};dbname={$name}",$user,$pass,$this->opt['pdo']);
}
private function options($path){
return \system\core\SAL::getInstance()->MDC()->load($path);
}
/**
*
* @param type $sql
* @param type $params
* @param type $pdoOptions
* @return \GF\DB\SimpleDB
*/
public function prepare($sql, $params = array(), $pdoOptions = array()) {
$this->stmt = $this->db->prepare($sql, $pdoOptions);
$this->params = $params;
$this->sql = $sql;
return $this;
}
/**
*
* @param type $params
* @return \GF\DB\SimpleDB
*/
public function execute($params = array()) {
if($params){
$this->params = $params;
}
$this->stmt->execute($this->params);
return $this;
}
public function fetchAllAssoc() {
return $this->stmt->fetchAll(\PDO::FETCH_ASSOC);
}
public function fetchRowAssoc() {
return $this->stmt->fetch(\PDO::FETCH_ASSOC);
}
public function fetchAllNum() {
return $this->stmt->fetchAll(\PDO::FETCH_NUM);
}
public function fetchRowNum() {
return $this->stmt->fetch(\PDO::FETCH_NUM);
}
public function fetchAllObj() {
return $this->stmt->fetchAll(\PDO::FETCH_OBJ);
}
public function fetchRowObj() {
return $this->stmt->fetch(\PDO::FETCH_OBJ);
}
public function fetchAllColumn($column) {
return $this->stmt->fetchAll(\PDO::FETCH_COLUMN, $column);
}
public function fetchRowColumn($column) {
return $this->stmt->fetch(\PDO::FETCH_BOUND, $column);
}
public function fetchAllClass($class) {
return $this->stmt->fetchAll(\PDO::FETCH_CLASS, $class);
}
public function fetchRowClass($class) {
return $this->stmt->fetch(\PDO::FETCH_BOUND, $class);
}
public function getLastInsertId() {
return $this->db->lastInsertId();
}
public function getAffectedRows() {
return $this->stmt->rowCount();
}
public function getSTMT() {
return $this->stmt;
}
}