Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
21 / 21 |
CRAP | |
100.00% |
114 / 114 |
| abstract_sgbd_pdo | |
100.00% |
1 / 1 |
|
100.00% |
21 / 21 |
36 | |
100.00% |
114 / 114 |
| _getInstance | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
| setClassRow | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| chooseConfig | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setConfig | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getRequete | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getInsertFromTab | |
100.00% |
1 / 1 |
3 | |
100.00% |
10 / 10 |
|||
| getUpdateFromTab | |
100.00% |
1 / 1 |
3 | |
100.00% |
8 / 8 |
|||
| setId | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getWhereFromTab | |
100.00% |
1 / 1 |
4 | |
100.00% |
9 / 9 |
|||
| getRequestAndParam | |
100.00% |
1 / 1 |
4 | |
100.00% |
12 / 12 |
|||
| findManySimple | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| findMany | |
100.00% |
1 / 1 |
2 | |
100.00% |
8 / 8 |
|||
| findOne | |
100.00% |
1 / 1 |
2 | |
100.00% |
7 / 7 |
|||
| findOneSimple | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
| execute | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| update | |
100.00% |
1 / 1 |
1 | |
100.00% |
5 / 5 |
|||
| insert | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| delete | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| getPdo | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| query | |
100.00% |
1 / 1 |
2 | |
100.00% |
18 / 18 |
|||
| erreur | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| <?php | |
| /* | |
| This file is part of Mkframework. | |
| Mkframework is free software: you can redistribute it and/or modify | |
| it under the terms of the GNU Lesser General Public License as published by | |
| the Free Software Foundation, either version 3 of the License. | |
| Mkframework is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public License | |
| along with Mkframework. If not, see <http://www.gnu.org/licenses/>. | |
| */ | |
| /** | |
| * classe abstract_sgbd | |
| * @author Mika | |
| * @link http://mkf.mkdevs.com/ | |
| */ | |
| abstract class abstract_sgbd_pdo{ | |
| protected $_tConfig; | |
| protected $_sConfig; | |
| protected $_sClassRow; | |
| protected $_pDb; | |
| protected $_sReq; | |
| protected $_tId; | |
| private static $_tInstance=array(); | |
| /** | |
| * @access public | |
| * @return une object | |
| */ | |
| protected static function _getInstance($class,$sConfig) { | |
| if ( !isset(self::$_tInstance[$class][$sConfig]) ){ | |
| $oSgbd = new $class(); | |
| $oSgbd->chooseConfig($sConfig); | |
| self::$_tInstance[$class][$sConfig]=$oSgbd; | |
| } | |
| return self::$_tInstance[$class][$sConfig]; | |
| } | |
| /** | |
| * force la classe row | |
| * @access public | |
| * @param string $sClassRow | |
| */ | |
| public function setClassRow($sClassRow){ | |
| $this->_sClassRow=$sClassRow; | |
| } | |
| /** | |
| * choisit le profile de connection | |
| * @param string $sConfig | |
| */ | |
| public function chooseConfig($sConfig){ | |
| $this->_sConfig=$sConfig; | |
| } | |
| /** | |
| * definir le tableau de connection | |
| * @param array $tConfig | |
| */ | |
| public function setConfig($tConfig){ | |
| $this->_tConfig=$tConfig; | |
| } | |
| /** | |
| * retourne la requete | |
| */ | |
| public function getRequete(){ | |
| return $this->_sReq; | |
| } | |
| public function getInsertFromTab($tProperty){ | |
| $sCols=''; | |
| $sVals=''; | |
| if($tProperty){ | |
| $tKey=array_keys($tProperty); | |
| foreach($tKey as $sVar){ | |
| $sCols.=$sVar.','; | |
| $sVals.='?,'; | |
| } | |
| } | |
| return '('.substr($sCols,0,-1).') VALUES ('.substr($sVals,0,-1).') '; | |
| } | |
| public function getUpdateFromTab($tProperty){ | |
| $sReq=''; | |
| if($tProperty){ | |
| $tKey=array_keys($tProperty); | |
| foreach($tKey as $sVar){ | |
| $sReq.=$sVar.'=?,'; | |
| } | |
| } | |
| return substr($sReq,0,-1); | |
| } | |
| public function setId($tId){ | |
| $this->_tId=$tId; | |
| } | |
| public function getWhereFromTab($tId){ | |
| $sWhere=''; | |
| if(is_array($tId)){ | |
| $tKeyId=array_keys($tId); | |
| foreach($tKeyId as $sVar){ | |
| if($sWhere!=''){ $sWhere.=' AND '; } | |
| $sWhere.=$sVar.'=?'; | |
| } | |
| } | |
| return $sWhere; | |
| } | |
| protected function getRequestAndParam($tReq){ | |
| $sReq=null; | |
| $tParam=null; | |
| if(is_array($tReq)){ | |
| $sReq=$tReq[0]; | |
| if(isset($tReq[1]) and is_array($tReq[1])){ | |
| $tParam=$tReq[1]; | |
| }else{ | |
| unset($tReq[0]); | |
| $tParam=array_values($tReq); | |
| } | |
| }else{ | |
| $sReq=$tReq; | |
| } | |
| return array($sReq,$tParam); | |
| } | |
| public function findManySimple($tSql,$sClassRow){ | |
| list($sReq,$tParam)=$this->getRequestAndParam($tSql); | |
| $pRs=$this->query($sReq,$tParam); | |
| return $pRs->fetchAll(PDO::FETCH_OBJ); | |
| } | |
| public function findMany($tSql,$sClassRow){ | |
| list($sReq,$tParam)=$this->getRequestAndParam($tSql); | |
| $pRs=$this->query($sReq,$tParam); | |
| $tObj=array(); | |
| while($tRow=$pRs->fetch(PDO::FETCH_ASSOC)){ | |
| $oRow=new $sClassRow($tRow); | |
| $tObj[]=$oRow; | |
| } | |
| return $tObj; | |
| } | |
| public function findOne($tSql,$sClassRow){ | |
| list($sReq,$tParam)=$this->getRequestAndParam($tSql); | |
| $pRs=$this->query($sReq,$tParam); | |
| $tRow=$pRs->fetch(PDO::FETCH_ASSOC); | |
| if(empty($tRow) ){ | |
| return null; | |
| } | |
| $oRow=new $sClassRow($tRow); | |
| return $oRow; | |
| } | |
| public function findOneSimple($tSql,$sClassRow){ | |
| list($sReq,$tParam)=$this->getRequestAndParam($tSql); | |
| $pRs=$this->query($sReq,$tParam); | |
| $oRow=$pRs->fetch(PDO::FETCH_OBJ); | |
| if(empty($oRow) ){ | |
| return null; | |
| } | |
| return $oRow; | |
| } | |
| public function execute($tSql){ | |
| list($sReq,$tParam)=$this->getRequestAndParam($tSql); | |
| return $this->query($sReq,$tParam); | |
| } | |
| public function update($sTable,$tProperty,$tWhere){ | |
| $sReq='UPDATE '.$sTable.' SET '.$this->getUpdateFromTab($tProperty).' WHERE '.$this->getWhereFromTab($tWhere); | |
| $tPropertyAndWhere=array_merge($tProperty,$tWhere); | |
| $tParam=array_values($tPropertyAndWhere); | |
| $this->query($sReq,$tParam); | |
| } | |
| public function insert($sTable,$tProperty){ | |
| $sReq='INSERT INTO '.$sTable.' '.$this->getInsertFromTab($tProperty); | |
| $tParam=array_values($tProperty); | |
| $this->query($sReq,$tParam); | |
| return $this->getLastInsertId(); | |
| } | |
| public function delete($sTable,$tWhere){ | |
| $sReq='DELETE FROM '.$sTable.' WHERE '.$this->getWhereFromTab($tWhere); | |
| $tParam=array_values($tWhere); | |
| $this->query($sReq,$tParam); | |
| } | |
| public function getPdo(){ | |
| $this->connect(); | |
| return $this->_pDb; | |
| } | |
| protected function query($sReq,$tParam=null){ | |
| if($tParam==null){ | |
| $tParam=array(); | |
| } | |
| $tATTRERRMODE=array( | |
| 'SILENT' => PDO::ERRMODE_SILENT, | |
| 'WARNING' => PDO::ERRMODE_WARNING, | |
| 'EXCEPTION' => PDO::ERRMODE_EXCEPTION, | |
| ); | |
| $tATTRCASE=array( | |
| 'LOWER' => PDO::CASE_LOWER, | |
| 'NATURAL' => PDO::CASE_NATURAL, | |
| 'UPPER' => PDO::CASE_UPPER, | |
| ); | |
| $this->connect(); | |
| $this->_sReq=$sReq.' [ '.implode(' | ',$tParam).' ]'; | |
| $this->_pDb->setAttribute(PDO::ATTR_ERRMODE, $tATTRERRMODE[ trim(_root::getConfigVar('pdo.ATTR_ERRMODE','WARNING')) ] ); | |
| $this->_pDb->setAttribute(PDO::ATTR_CASE, $tATTRCASE[ trim(_root::getConfigVar('pdo.ATTR_CASE','NATURAL')) ] ); | |
| $sth = $this->_pDb->prepare($sReq); | |
| $sth->execute($tParam); | |
| return $sth; | |
| } | |
| public function erreur($sErreur){ | |
| throw new Exception($sErreur); | |
| } | |
| } |