You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
3.4 KiB

<?php
namespace app\Core;
use app\Core\Connect;
use PDO;
use PDOException;
/**
* Description of WppModel
*
* @author Lucas Awade
*/
abstract class Model
{
protected $query;
protected function strquery($stmt, $params)
{
foreach ($params as $key => $value) {
if (is_null($value) || (is_string($value) && $value == '')) {
$value = null;
}
$stmt->bindValue(":{$key}", $value, (is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR));
}
}
public function begin()
{
try {
Connect::getInstance()->beginTransaction();
return 1;
} catch (PDOException $ex) {
Connect::setInstance(null);
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
return null;
}
}
public function commit()
{
try {
Connect::getInstance()->commit();
return 1;
} catch (PDOException $ex) {
Connect::setInstance(null);
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
return null;
}
}
public function rollback()
{
try {
Connect::getInstance()->rollBack();
return 1;
} catch (PDOException $ex) {
Connect::setInstance(null);
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
return null;
}
}
protected function create($query, $data)
{
try {
$stmt = Connect::getInstance()->prepare($query);
$this->strquery($stmt, $data);
$stmt->execute();
return Connect::getInstance()->lastInsertId();
} catch (PDOException $ex) {
Connect::setInstance(null);
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
return null;
}
}
protected function read($query, $data = null)
{
try {
$stmt = Connect::getInstance()->prepare($query);
$this->strquery($stmt, $data);
$stmt->execute();
return $stmt;
} catch (PDOException $ex) {
Connect::setInstance(null);
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
return null;
}
}
protected function delete($query, $data)
{
try {
$stmt = Connect::getInstance()->prepare($query);
$this->strquery($stmt, $data);
$stmt->execute();
return ($stmt->rowCount() ? 1 : 0);
} catch (PDOException $ex) {
Connect::setInstance(null);
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
return null;
}
}
protected function update($query, $data)
{
try {
$stmt = Connect::getInstance()->prepare($query);
$this->strquery($stmt, $data);
$stmt->execute();
return ($stmt->rowCount() ? 1 : 0);
} catch (PDOException $ex) {
Connect::setInstance(null);
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
return null;
}
}
}