diff --git a/classes/DBConnector.class.php b/classes/DBConnector.class.php
index 245bb58..b505a6e 100644
--- a/classes/DBConnector.class.php
+++ b/classes/DBConnector.class.php
@@ -13,8 +13,28 @@
*/
class DBConnector
{
- static private $handlers = array();
- static public $queries = array();
+ private $handlers = array();
+ static private $instance = null;
+ static public $queries = array();
+
+ /**
+ * Запрещаем new и клонирование
+ */
+ private function __construct(){}
+
+ private function __clone(){}
+
+ /**
+ * Единственный способ инициализации. Singletone как-никак.
+ * @return DBConnector
+ */
+ static public function getInstance()
+ {
+ if (self::$instance == null) {
+ self::$instance = new DBConnector();
+ }
+ return self::$instance;
+ }
/**
* Получение соединения.
@@ -23,12 +43,12 @@ class DBConnector
* @param array $db_settings - массив настроек
* @return resource - идентификатор соединения
*/
- static function getConnect($db_settings)
+ public function getConnect($db_settings)
{
- $handler_name = self::getConnectionName($db_settings);
+ $handler_name = $this->getConnectionName($db_settings);
- if (isset(self::$handlers[$handler_name])) {
- return self::$handlers[$handler_name];
+ if (isset($this->handlers[$handler_name])) {
+ return $this->handlers[$handler_name];
}
if (!$handler = mysqli_connect($db_settings['host'], $db_settings['user'], $db_settings['password'], $db_settings['database'])) {
@@ -36,12 +56,12 @@ class DBConnector
}
mysqli_query($handler, "SET NAMES 'utf8'"); //cheat!!!
- return self::$handlers[$handler_name] = $handler;
+ return $this->handlers[$handler_name] = $handler;
}
- static function getConnectionName($db_settings)
+ protected function getConnectionName($db_settings)
{
- return $db_settings['host'].'-'.$db_settings['database'];
+ return $db_settings['host'] . '-' . $db_settings['database'];
}
}
?>
\ No newline at end of file
diff --git a/classes/Env.class.php b/classes/Env.class.php
index 45c326c..c196bb2 100644
--- a/classes/Env.class.php
+++ b/classes/Env.class.php
@@ -83,7 +83,8 @@ final class Env
*/
static public function getBidCost($dis = 0)
{
- $cost = Load::model('Settings')->get('bid_base_price');
+ $settings_model = new SettingsModel();
+ $cost = $settings_model->get('bid_base_price');
if ($dis > 0 && $dis <= 100) {
return $cost - intval($dis);
}
diff --git a/classes/Model.class.php b/classes/Model.class.php
index e2b20a8..08a9583 100644
--- a/classes/Model.class.php
+++ b/classes/Model.class.php
@@ -19,7 +19,7 @@ abstract class Model
function __construct()
{
- $this->handler = DBConnector::getConnect(Env::getParam('db_settings'));
+ $this->handler = DBConnector::getInstance()->getConnect(Env::getParam('db_settings'));
}
/**
@@ -30,7 +30,9 @@ abstract class Model
*/
function exec($sql)
{
- $time = microtime(true);
+ if (DEBUG_ENABLE) {
+ $time = microtime(true);
+ }
$res = mysqli_query($this->handler, $sql);
if (mysqli_errno($this->handler)) {
throw new MJException("Query Error:\n".$sql."\nError:\n".mysqli_error($this->handler), 1);
diff --git a/classes/User.class.php b/classes/User.class.php
index e4a74e5..1463fc2 100644
--- a/classes/User.class.php
+++ b/classes/User.class.php
@@ -34,7 +34,8 @@ class User
}
self::setSession();
- Load::model('UserData')->loginUpdate($login);
+ $model = new UserDataModel();
+ $model->loginUpdate($login);
return true;
}
@@ -106,12 +107,14 @@ class User
static function getByLogin($login)
{
- return Load::model('UserData')->getByLogin($login);
+ $model = new UserDataModel();
+ return $model->getByLogin($login);
}
static function getById($id)
{
- return Load::model('UserData')->getById($id);
+ $model = new UserDataModel();
+ return $model->getById($id);
}
@@ -124,7 +127,8 @@ class User
*/
static function sendActivateMail($mail, $login)
{
- $link = 'http://'.Env::Server('SERVER_NAME').'/activate/?key='.Load::model('UserActivate')->generateKey($login, $mail);
+ $model = new UserActivateModel();
+ $link = 'http://'.Env::Server('SERVER_NAME').'/activate/?key=' . $model->generateKey($login, $mail);
$mailer = new Mailer('UserRegister');
return $mailer->send($mail, "Подтверждени E-mail ".Env::Server('SERVER_NAME'), array('link' => $link, 'site_name' => Env::Server('SERVER_NAME')));