Я пользуюсь PDO, не знаю чем это может помочь в данной ситуации, но все же. В общем реально ли сделать такое:
Имена таблиц подключенной базы данных должны стать (полями/методами), и иметь свои методы (поля).
Напр. (допустим мы подключились к бд test и в ней есть таблица Users)
$m = new MDB();
$m->Users()->GetRec($a);
Спустя 8 часов, 6 минут, 2 секунды (18.08.2012 - 16:13) I++ написал(а):
Вообще есть вот такое: http://www.php.net/manual/ru/mysqli-result.fetch-object.php
Но производительность в данном случае почти в 3 раза ниже, чем при использовании классического подхода.
Есть еще вот такая хрень: http://www.php.net/manual/ru/mysqli-stmt.prepare.php
Я лично её терпеть не могу, но она иногда используется.
Но производительность в данном случае почти в 3 раза ниже, чем при использовании классического подхода.
Есть еще вот такая хрень: http://www.php.net/manual/ru/mysqli-stmt.prepare.php
Я лично её терпеть не могу, но она иногда используется.
Спустя 2 часа, 31 минута, 5 секунд (18.08.2012 - 18:44) Stasonix написал(а):
Я вот так сделал:
Но говорят что очень расточительно ибо же кэшировать надо, а вот как это сделать что-то я теряюсь в догадках.
class MDB extends DB {
// current table
protected $tbl = "";
function __construct(){
parent::__construct();
}
public function __call( $method, $param )
{
$tables = array();
if ($result = $this->pdo->query("SHOW TABLES"))
{
while ($row = $result->fetch(PDO::FETCH_NUM))
{
$tables[] = $row[0];
}
}
if (in_array($method,$tables))
{
$this->tbl = $method;
return $this;
}
else
{
return FALSE;
}
}
Но говорят что очень расточительно ибо же кэшировать надо, а вот как это сделать что-то я теряюсь в догадках.
Спустя 12 минут, 21 секунда (18.08.2012 - 18:57) Guest написал(а):
Вообще то это называется шлюзами и они отображают реляционную структуру таблицы в объектную, так как mysql не объектная БД.
http://martinfowler.com/eaaCatalog/tableDataGateway.html
http://martinfowler.com/eaaCatalog/rowDataGateway.html
http://www.longacre-scm.com/blog/index.php...le-data-gateway
http://martinfowler.com/eaaCatalog/tableDataGateway.html
http://martinfowler.com/eaaCatalog/rowDataGateway.html
http://www.longacre-scm.com/blog/index.php...le-data-gateway
Спустя 9 минут, 33 секунды (18.08.2012 - 19:06) Guest написал(а):
Цитата |
Вообще есть вот такое: http://www.php.net/manual/ru/mysqli-result.fetch-object.php Но производительность в данном случае почти в 3 раза ниже, чем при использовании классического подхода. |
Цитата |
Замечание: Производительность В плане скорости эта функция аналогична mysql_fetch_array() и почти также быстра, как mysql_fetch_row() (разница незначительна). Замечание: mysql_fetch_object() работает аналогично mysql_fetch_array(), с единственным отличием - функция возвращает объект вместо массива. Это, кроме всего прочего, означает, что вы сможете работать с полями только по имени колонок, а не индексов (числа не могут быть свойствами объекта). |