|
@@ -1,12 +1,5 @@
|
|
|
<?php
|
|
|
-ApplicationSettings::RegisterDefaultSetting("database", "host", "localhost");
|
|
|
-ApplicationSettings::RegisterDefaultSetting("database", "database", "php-mvc");
|
|
|
-ApplicationSettings::RegisterDefaultSetting("database", "username", "root");
|
|
|
-ApplicationSettings::RegisterDefaultSetting("database", "password", "");
|
|
|
-
|
|
|
-
|
|
|
class DBObject implements ISavableObject{
|
|
|
- protected static $PDO=null;
|
|
|
protected static $PREPARED_STATEMENTS=array();
|
|
|
|
|
|
private static $_classFields=array();
|
|
@@ -15,22 +8,6 @@ class DBObject implements ISavableObject{
|
|
|
protected $_changedFields=array();
|
|
|
|
|
|
private $_table,$_key,$_id;
|
|
|
-
|
|
|
- protected static function SetupPDO(){
|
|
|
- if (self::$PDO!=null)
|
|
|
- return;
|
|
|
- $host=ApplicationSettings::GetSetting("database", "host");
|
|
|
- $db=ApplicationSettings::GetSetting("database", "database");
|
|
|
- $username=ApplicationSettings::GetSetting("database", "username");
|
|
|
- $password=ApplicationSettings::GetSetting("database", "password");
|
|
|
- self::$PDO=new PDO("mysql:host=$host;dbname=$db",$username,$password);
|
|
|
- self::$PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
|
|
|
- }
|
|
|
-
|
|
|
- public static function GetPDO(){
|
|
|
- self::SetupPDO();
|
|
|
- return self::$PDO;
|
|
|
- }
|
|
|
|
|
|
public static function VariableToDBField($variableName) {
|
|
|
$parts=preg_split('/(?=[A-Z])/', $variableName);
|
|
@@ -51,8 +28,6 @@ class DBObject implements ISavableObject{
|
|
|
$this->_key=$key;
|
|
|
$this->_id=$id;
|
|
|
|
|
|
- self::SetupPDO();
|
|
|
-
|
|
|
$this->Load();
|
|
|
}
|
|
|
|
|
@@ -74,17 +49,19 @@ class DBObject implements ISavableObject{
|
|
|
}
|
|
|
|
|
|
public function Load(){
|
|
|
+ $PDO=BaseRepository::GetPDO();
|
|
|
+
|
|
|
$class=get_class($this);
|
|
|
|
|
|
if (!isset(self::$_classFields[$class])){
|
|
|
- self::$_classFields[$class]=self::$PDO->query("DESCRIBE `{$this->_table}`")->fetchAll(PDO::FETCH_COLUMN);
|
|
|
+ self::$_classFields[$class]=$PDO->query("DESCRIBE `{$this->_table}`")->fetchAll(PDO::FETCH_COLUMN);
|
|
|
}
|
|
|
|
|
|
$statementKey=$class.'_construct_'.$this->_key;
|
|
|
if (!isset(self::$PREPARED_STATEMENTS[$statementKey])){
|
|
|
$fields=implode(", ", self::$_classFields[$class]);
|
|
|
$sql="SELECT $fields FROM `{$this->_table}` WHERE `{$this->_key}`=?";
|
|
|
- self::$PREPARED_STATEMENTS[$statementKey]=self::$PDO->prepare($sql);
|
|
|
+ self::$PREPARED_STATEMENTS[$statementKey]=$PDO->prepare($sql);
|
|
|
}
|
|
|
$prep=self::$PREPARED_STATEMENTS[$statementKey];
|
|
|
$prep->execute(array($this->_id));
|
|
@@ -100,6 +77,8 @@ class DBObject implements ISavableObject{
|
|
|
}
|
|
|
|
|
|
public function Save() {
|
|
|
+ $PDO=BaseRepository::GetPDO();
|
|
|
+
|
|
|
if (count($this->_changedFields)==0)
|
|
|
return;
|
|
|
|
|
@@ -117,7 +96,7 @@ class DBObject implements ISavableObject{
|
|
|
$sql="INSERT INTO `{$this->_table}` SET ".implode(", ", $fields);
|
|
|
}
|
|
|
|
|
|
- $prep=self::$PDO->prepare($sql);
|
|
|
+ $prep=$PDO->prepare($sql);
|
|
|
$prep->execute($execData);
|
|
|
|
|
|
//var_dump($prep->errorInfo());
|
|
@@ -127,9 +106,9 @@ class DBObject implements ISavableObject{
|
|
|
|
|
|
if ($this->_id===0){ // If this is a new object we want to reload fromt he DB to make sure all fields are correct.
|
|
|
// In order to do so we need to find the value for the key we're using
|
|
|
- $id=self::$PDO->lastInsertId();
|
|
|
- $key=self::$PDO->query("SHOW INDEX FROM `{$this->_table}` WHERE Key_name='PRIMARY'")->fetch()['Column_name'];
|
|
|
- $this->_id=self::$PDO->query("SELECT `{$this->_key}` FROM `{$this->_table}` WHERE `$key`=$id")->fetchColumn();
|
|
|
+ $id=$PDO->lastInsertId();
|
|
|
+ $key=$PDO->query("SHOW INDEX FROM `{$this->_table}` WHERE Key_name='PRIMARY'")->fetch()['Column_name'];
|
|
|
+ $this->_id=$PDO->query("SELECT `{$this->_key}` FROM `{$this->_table}` WHERE `$key`=$id")->fetchColumn();
|
|
|
$this->Load();
|
|
|
}
|
|
|
}
|