Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
88.24% |
15 / 17 |
CRAP | |
96.55% |
84 / 87 |
abstract_model | |
0.00% |
0 / 1 |
|
88.24% |
15 / 17 |
29 | |
96.55% |
84 / 87 |
getConfig | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getTable | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getSgbd | |
100.00% |
1 / 1 |
9 | |
100.00% |
39 / 39 |
|||
findOneSimple | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
findOne | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
findMany | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
findManySimple | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
execute | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
update | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
insert | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
delete | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
getRequete | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getIdTab | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
getListColumn | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getListTable | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getWhereFromTab | |
0.00% |
0 / 1 |
4.18 | |
77.78% |
7 / 9 |
|||
_getInstance | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
<?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_model | |
* @author Mika | |
* @link http://mkf.mkdevs.com/ | |
*/ | |
abstract class abstract_model{ | |
private $_sClassSgbd=null; | |
private $_oSgbd=null; | |
private static $_tInstance=array(); | |
protected $_tAssoc=array(); | |
public function getConfig(){ | |
return $this->sConfig; | |
} | |
public function getTable(){ | |
return $this->sTable; | |
} | |
/** | |
* @access public static | |
* @return object sgbd | |
*/ | |
public function getSgbd(){ | |
$bFirst=false; | |
if($this->_sClassSgbd==null){ | |
$sVarIniConfig=_root::getConfigVar('model.ini.var','db'); | |
$tClassSgbd=_root::getConfigVar($sVarIniConfig); | |
if(!$tClassSgbd){ | |
$sMsg='Il vous manque un fichier de configuration'; | |
$sMsg.=' ou le bloc de configuration ['.$sVarIniConfig.'] concernant la connexion'."\n"; | |
$sMsg.=' | |
Exemple: | |
['.$sVarIniConfig.'] | |
mysql.dsn="mysql:dbname=blog;host=localhost" | |
mysql.sgbd=pdo_mysql | |
mysql.hostname=localhost | |
mysql.database=blog | |
mysql.username=root | |
mysql.password=pass | |
'; | |
throw new Exception($sMsg); | |
} | |
$this->_sClassSgbd='sgbd_'.$tClassSgbd[$this->sConfig.'.sgbd']; | |
$bFirst=true; | |
if(substr($this->_sClassSgbd,0,8)=='sgbd_pdo'){ | |
$sClassPath=_root::getConfigVar('path.lib').'sgbd/pdo/'.$this->_sClassSgbd.'.php'; | |
}elseif(substr($this->_sClassSgbd,0,5)=='sgbd_'){ | |
$sClassPath=_root::getConfigVar('path.lib').'sgbd/'.$this->_sClassSgbd.'.php'; | |
} | |
if(!file_exists($sClassPath)){ | |
$oDirPdo=new _dir( _root::getConfigVar('path.lib').'sgbd/pdo/'); | |
$tListPdo=$oDirPdo->getListFile(); | |
$tPlus=array('Liste driver pdo:'); | |
foreach($tListPdo as $oFile){ | |
$tPlus[]='-'.$oFile->getName(); | |
} | |
$sListePdo=implode("\n",$tPlus); | |
$oDir=new _dir( _root::getConfigVar('path.lib').'sgbd/'); | |
$tList=$oDir->getListFile(); | |
$tPlus=array('Liste driver autre:'); | |
foreach($tList as $oFile){ | |
$tPlus[]='-'.$oFile->getName(); | |
} | |
$sListeAutre=implode("\n",$tPlus); | |
throw new Exception('Pas de driver '.$this->_sClassSgbd.' ('.$sClassPath.')'."\n".$sListePdo."\n".$sListeAutre); | |
} | |
} | |
$this->_oSgbd=call_user_func( array($this->_sClassSgbd,'getInstance'),$this->sConfig); | |
if($bFirst){ | |
$this->_oSgbd->setConfig($tClassSgbd); | |
} | |
return $this->_oSgbd; | |
} | |
/** | |
* retourne un tableau d'enregistrement d'objet simple (plus rapide) | |
* @access public | |
* @param string $sRequete | |
* @param undefined $uParam | |
* @return un object | |
*/ | |
public function findOneSimple(){ | |
$tSql=func_get_args(); | |
$oObj= $this->getSgbd()->findOneSimple($tSql,$this->sClassRow); | |
/*LOG*/_root::getLog()->info('sql select:'.$this->getSgbd()->getRequete()); | |
return $oObj; | |
} | |
/** | |
* retourne un tableau d'enregistrement | |
* @access public | |
* @param string $sRequete | |
* @param undefined $uParam | |
* @return un object | |
*/ | |
public function findOne(){ | |
$tSql=func_get_args(); | |
$oObj= $this->getSgbd()->findOne($tSql,$this->sClassRow); | |
/*LOG*/_root::getLog()->info('sql select:'.$this->getSgbd()->getRequete()); | |
return $oObj; | |
} | |
/** | |
* retourne un tableau d'enregistrement | |
* @access public | |
* @param string $sRequete | |
* @param undefined $uParam | |
* @return un tableau d'object | |
*/ | |
public function findMany(){ | |
$tSql=func_get_args(); | |
$tObj= $this->getSgbd()->findMany($tSql,$this->sClassRow); | |
/*LOG*/_root::getLog()->info('sql select:'.$this->getSgbd()->getRequete()); | |
return $tObj; | |
} | |
/** | |
* retourne un tableau d'enregistrement d'objet simple (plus rapide) | |
* @access public | |
* @param string $sRequete | |
* @param undefined $uParam | |
* @return un tableau d'object | |
*/ | |
public function findManySimple(){ | |
$tSql=func_get_args(); | |
$tObj= $this->getSgbd()->findManySimple($tSql,$this->sClassRow); | |
/*LOG*/_root::getLog()->info('sql select:'.$this->getSgbd()->getRequete()); | |
return $tObj; | |
} | |
/** | |
* execute une requete | |
* @access public | |
* @param string $sRequete | |
* @param undefined $uParam | |
*/ | |
public function execute(){ | |
$tSql=func_get_args(); | |
$handle=$this->getSgbd()->execute($tSql); | |
/*LOG*/_root::getLog()->info('sql execute:'.$this->getSgbd()->getRequete()); | |
return $handle; | |
} | |
/** | |
* met a jour un enregistrement | |
* @access public | |
* @param object $oRow | |
*/ | |
public function update($oRow){ | |
$this->getSgbd()->update($this->sTable,$oRow->getToUpdate(),$oRow->getWhere()); | |
/*LOG*/_root::getLog()->info('sql update:'.$this->getSgbd()->getRequete()); | |
} | |
/** | |
* ajoute un enregistrement | |
* @access public | |
* @param object $oRow | |
*/ | |
public function insert($oRow){ | |
$oInsert= $this->getSgbd()->insert($this->sTable,$oRow->getToUpdate()); | |
/*LOG*/_root::getLog()->info('sql insert:'.$this->getSgbd()->getRequete()); | |
return $oInsert; | |
} | |
/** | |
* supprime un enregistrement | |
* @access public | |
* @param object $oRow | |
*/ | |
public function delete($oRow){ | |
$this->getSgbd()->delete($this->sTable,$oRow->getWhere()); | |
/*LOG*/_root::getLog()->info('sql delete:'.$this->getSgbd()->getRequete()); | |
} | |
/** | |
* retourne la requete | |
* @access public | |
* @return string requete | |
*/ | |
public function getRequete(){ | |
return $this->getSgbd()->getRequete(); | |
} | |
public function getIdTab(){ | |
return $this->tId; | |
} | |
/** | |
* retourne un tableau contenant les colonnes d'une table | |
* @access public | |
* @return array | |
*/ | |
public function getListColumn(){ | |
return $this->getSgbd()->getListColumn($this->sTable); | |
} | |
/** | |
* retourne un tableau contenant les tables | |
* @access public | |
* @return array | |
*/ | |
public function getListTable(){ | |
return $this->getSgbd()->getListTable(); | |
} | |
public function getWhereFromTab($tWhere=null){ | |
if($tWhere==null){ | |
return null; | |
} | |
$sWhere=''; | |
if(is_array($tWhere)){ | |
foreach($tWhere as $sVar => $sVal){ | |
$sWhere.=$sVar.'='.$this->quote($sVal).' AND'; | |
} | |
return substr($sWhere,0,-3); | |
}else{ | |
return $this->tId[0].'='.$tWhere; | |
} | |
} | |
protected static function _getInstance($class) { | |
if (array_key_exists($class, self::$_tInstance) === false){ | |
self::$_tInstance[$class] = new $class(); | |
} | |
return self::$_tInstance[$class]; | |
} | |
} |