вот если бы ты сказал, что тебе важно PDOStatement, я бы понял, что ты его mock и т.п. а так я делаю выводы, что все таки пдо для тебя это абстракция от маразма. Ну скажи, много мозгов надо, что бы дотумкать что субд это e.g. exec ?Для начала, скорее про mysqli, которой пытается подражать автор)почему ещё никто не сказал про PDO?
По-моему ты не совсем понял, что я написал. Функция является "deprecated" - это когда функция исчезнет в будущих версиях php. В данном случае eregi исчезает, preg_match рулит.4 - да, таки надо делать 2 отдельные функции (одну - для SELECT, другую - для остальных запросов, в которых не надо возвращать данные)
И еще одну - для возвращения единичного значения отдельного столбца (иногда нужно получить отдельное значение из таблицы)
Да. Я неправильно тебя понял.Автор оригинала: varan
По-моему ты не совсем понял, что я написал. Функция является "deprecated" - это когда функция исчезнет в будущих версиях php. В данном случае eregi исчезает, preg_match рулит.
Так и делаю сейчас. Качаю разные и смотрю внутреннюю структуру, примеры реализации и код включенных классов.А по поводу того, что написал, хочу сказать, что тебе стоит-таки попробовать поюзать Zend Framework или еще какой-нибудь framework; они все сплошь ООП, и волей-неволей в мозгу начнет кое-что проясняться.
Я сейчас глянул, довольно интересная библиотечкаЯ использую DbSimple и не жалуюсь
я бы функцию коннект объединил бы с консруктором:$db = new db();
$db->connect();
Автор оригинала: Alexandre
я бы функцию коннект объединил бы с консруктором:
а в чем разница? или пишем конструктор в одном методе - например, конструктор другого класса а конектимся в другом? не проще ли в этом же месте и написать коннект-конструктора я бы коннектился по требованию
Давно пора )страниц через 20 будут сформулированы критерии идеального класса для работы с БД =)
<php
class db {
/**
* Holds an insance of self
* @var $instance
*/
private static $instance = NULL;
/**
*
* Return DB instance or create intitial connection
*
* @return object (PDO)
*
* @access public
*
*/
public static function getInstance()
{
if (!self::$instance)
{
$config = config::getInstance();
$db_type = $config->config_values['database']['db_type'];
$hostname = $config->config_values['database']['db_hostname'];
$dbname = $config->config_values['database']['db_name'];
$db_password = $config->config_values['database']['db_password'];
$db_username = $config->config_values['database']['db_username'];
$db_port = $config->config_values['database']['db_port'];
$db_encoding = $config->config_values['database']['db_encoding'];
$driver_options = array();
if($db_type == 'mysql')
$driver_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES '.$db_encoding;
self::$instance = new PDO("$db_type:host=$hostname;port=$db_port;dbname=$dbname", $db_username, $db_password, $driver_options);
}
return self::$instance;
}
?>
<?php
class newsModel extends db {
private $db;
public function __construct() {
$this->db = db::getInstance(); // connect to database
}
// .....
?>
<php
class db {
private static $instance = NULL;
public static function getInstance()
{
if (!self::$instance)
{
self::$instance = mysql_select_db($db, mysql_connect($host,$user,$password));
}
return self::$instance;
}
?>