Гость
Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012
Помог: 4 раз(а)
|
Вчера я понял, что все, что я накодил, далеко не оптимизировано и не юзабельно.
Произошло это после того, как я ознакомился с кодом одного человека :
Okula -----> Спойлер (Отобразить)Okula пишет:
PHP:
скопировать код в буфер обмена
class ConnectDB { const DB_SERVER = 'localhost', // серевер DB_USER = 'root', // имя пользователя DB_PASSW = '', // пароль пользователя DB_BASE = 'base', // имя базы данных DB_CHARSET = 'UTF8'; // кодировка соединения /** * Ссылка на объект данного класса * @var object */ static private $instanse = NULL; /** * Ссылка на объект соединения с базой данных * @var type */ private $db = NULL; private function __construct() {} private function __clone() {} private function __wakeup() {} public function __destruct() { $this->db->close(); } /** * Создание конекта с базой * @return object Ссылка на текущий объект */ static public function newConnect() { if(self::$instanse == NULL) { self::$instanse = new self(); self::$instanse->db = new mysqli(self::DB_SERVER, self::DB_USER, self::DB_PASSW, self::DB_BASE); self::$instanse->db->set_charset(self::DB_CHARSET); } return self::$instanse; } /** * Возвращает ссылку на соединение с БД * @return object Ссылка на объект MySQLi */ function getConnectLink() { return $this->db; } } $db = ConnectDB::newConnect()->getConnectLink(); $row = $db->query("SELECT COUNT(*) FROM `table`")->fetch_row();
По сравнению с моим кодом : Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
<?PHP class DBConnection { private $connection; private $database; private $log; public function __construct($server, $port, $username, $password, $database = null) { $this -> connection['server'] = $server; $this -> connection['port'] = $port; $this -> connection['username'] = $username; $this -> connection['password'] = $password; $this -> database['name'] = $database; $this -> open_connection(); } private function open_connection() { $this -> connection['server'].':'. $this -> connection['port'], $this -> connection['username'], $this -> connection['password'] ); if (!empty($this -> database['name'])) { $this -> database['name'], $this -> connection['resourse_identifier'] ); } else { $this -> database['status'] = false; } } private function query($sql) { if ($query = mysql_query($sql, $this -> connection['resourse_identifier'])) { $this -> log['query'][] = $query; return $query; } else { return false; } } public function select($what, $from, $where = null, $order_by = null, $limit = null, $flag = MYSQL_ASSOC) { $sql .= ' from `'.((is_array($from)) ? implode('`, `', $from) : $from).'`'; { } { $sql .= ' order by '.$order_by; } { $sql .= ' limit '.$limit; } $sql .= ';'; $query = $this -> query($sql); { $fetched[] = $row; } return $fetched; } public function insert($table, $values) { if ($i == count($values)) { $keys = '('.implode(', ', $keys).')'; } else $keys = ''; $sql = 'insert into '.$table.$keys.' values '; $sql .= ';'; if ($this -> query($sql)) { return true; } else { return false; } } public function update($table, $sets, $where = null) { $sql = 'update '.$table; $sql .= ' set '; { $i = 0; while (list($setKey, $setValue) = each($sets)) { $sql .= $setKey.' = '.$setValue; if (++$i < count($sets)) $sql .= ', '; } } else $sql .= $sets; { $i = 0; foreach ($where as $where_value) { $sql .= $where_value; if (++$i < count($where)) $where .= ', '; } } else $sql .= $where; $sql .= ';'; if ($this -> query($sql)) { return true; } else { return false; } } public function drop_table($table) { $this -> query('drop '.$table); } } ?>
Его код намного очевидней и понятней. Проще и юзабельнее.
Возникло ОГРОМНОЕ желание перестать писать ужасный код, но не представляю, откуда черпать всю новую информацию. Есть ли пособия, книги, чтобы перейти со всего того, чему учат в уже заезженных книгах по php ( учат mysql вместо mysqli, используют mysql_result, хотя это очень медленная ф-я и т.д. ) на то, что теперь актуально : например, я слышал для соединения с БД стали использовать какое-то расширение PDO ...
ПОМОГИТЕ
|