Форум → Программирование → PHP для идиотов → PHP и ООП → class sql
class sql
Страницы: ← Предыдущая страница • Следующая страница →
-
Ноя. 1, 2011, 3:59 п.п., спустя 9 минут 21 секунду
чел просто хочет получит опытYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
Ноя. 1, 2011, 4:56 п.п., спустя 56 минут 52 секунды
Полезный совет: класс запроса и класс базы данных должны быть два разных класса -
Ноя. 2, 2011, 12:01 д.п., спустя 7 часов 5 минут 8 секунд
$db->q_select("select id, name from page order by id");
$db->q_delete("delete * from page");
а что будет если сделать
$db->q_select("delete * from page");
?не всё полезно, что в swap полезло -
-
Ноя. 2, 2011, 12:13 д.п., спустя 7 минут 32 секунды
класс запроса и класс базы данных должны быть два разных класса
да ну, какой класс запроса, не нужен он совсемне всё полезно, что в swap полезло -
Ноя. 2, 2011, 12:21 д.п., спустя 8 минут 39 секунд
класс запроса и класс базы данных должны быть два разных класса
да ну, какой класс запроса, не нужен он совсем
а как же IoC?Спустя 101 сек.v1
$query = $db->query($sql);
$db->fetch_array($query);
v2
$query = $db->query($sql);
$query->fetch_array();
v3
$db->query($sql)->fetch_array(); -
Ноя. 2, 2011, 12:45 д.п., спустя 23 минуты 24 секунды
$query = $db->query($sql);
$db->fetch_array($query);
и здравствуй, утечка памяти. кто вспомнит что нужно сделать unset($query)?
и в чём собственно разница с
$db->fetch_array($query)
?не всё полезно, что в swap полезло -
Ноя. 2, 2011, 3:13 д.п., спустя 2 часа 28 минут 13 секунд
$query = $db->query($sql);
$db->fetch_array($query);
и здравствуй, утечка памяти. кто вспомнит что нужно сделать unset($query)?
и в чём собственно разница с
$db->fetch_array($query)
?
а пхп есть сборщик памяти, нужно просто все грамотно засовывать в функции которые после вызова все локальные переменные в себе уничтожают по идее
$db->query($sql)->fetch_array(); вот такой стиль мне нравится - вполне удобно -
Ноя. 2, 2011, 4:19 д.п., спустя 1 час 6 минут 5 секунд
нужно просто все грамотно засовывать в функции которые после вызова все локальные переменные в себе уничтожают по идее
например?Спустя 47 сек.$db->query($sql)->fetch_array(); вот такой стиль мне нравится - вполне удобно
за такое в серьёзных командах пиздят клюшкой, потому что дебажить сложнее. экономия на спичках.не всё полезно, что в swap полезло -
Ноя. 2, 2011, 11:27 д.п., спустя 7 часов 8 минут 22 секунды
это не класс запроса.
это класс результата. -
Ноя. 3, 2011, 11:15 п.п., спустя 1 день 11 часов 47 минут
И да, почему идентификатор соединения с базой - статика? А если мне надо 2 коннекта, чё делать?
ну для начала мне бы хоть с одним соединением разобраться хочется… а уж дальше плясать от этого…
А чё разбираться то? Переделывай из статики в private и всё. Класс для того и пишут чтобы избавиться от необходимости таскать ид соединения.Хуйня потому что mysql_* Есть же как минимум mysqli
у Вас весомые аргументы… а есть сервера, которые не поддерживают sqli и т.п.?? и вообщеp.s. не орем, пожалуйста про sqli, pdo и т.п. эти все рукожопства придуманы для ознакомления… практики
Ну, есть сервера на php 3, то ведь они не наша ЦА, так? Если уж ознакамливаться - то сразу php5.3, namespaces, closures и т.д. -
Ноя. 6, 2011, 5:55 п.п., спустя 2 дня 18 часов 40 минут
забываем все вышеупомянутое )))
вопрос: если я, допустим, делаю для разных баз… как лучше организовать??
вариант1: пишем классы, каждый из которых работает с своим видом базы ( mysql, postgresql и т.д. ) и в зависимости от того какую базу надо… вызываем нужный класс
вариант2: пишем некий класс, во время создания которого передается значение нужной базы ( array("driver" => "mysql") )
с первым вариантом вроде бы все понятно… а вот во втором случае… как быть… данный класс должен создавать новый класс, уже в зависимости от того какой драйвер или как??
как лучше то это вес представить логически? -
-
Ноя. 6, 2011, 7:48 п.п., спустя 1 час 9 минут 48 секунд
фабрику соединений делай, к примеру:
Абстрактный класс или интерфейс драйвера соединения с бд: AbstractDbConnection or IDbConnection
Драйвера, расширяющие абстрактный класс или реализующие интерфейс, например MysqlDbConnection extends AbstractDbConnection, PGDbConnection extends AbstractDbConnection
И собственно фабрика соединений, по дсн или по имени драйвера создающая инстансы сединений DbConnectionFactory::factory('mysql', $connectionOptions) or DbConnectionFactory::factory($dsn); и возвращающая AbstractDbConnection или IDbConnection, смотря по какому пути пойдёшь.
В дальнайшем при использовании полученного инстанса можно использовать только методы, объявленные в AbstractDbConnection или IDbConnection. Тоесть у тебя есть интерфейс работы с базой данных, обявленный в абстрактном классе или интерфейсе, если он полностью реализован в наследуемом драйвере, то тебе фообще побоку с какой бд ты работаешь, используешь данный интерфейс и всё.
По мне тут лучше использоватль абстрактный класс, так как докуя всего можно в него положить, а в реализии драйверов реализровать только соединение/запрос/разрыв соединения/эскейпинг/препарейшен.Work, buy, consume, die -
Ноя. 6, 2011, 7:53 п.п., спустя 5 минут 5 секунд
Nyaah, ты взорвешь ему мозг. не надо :)Сапожник без сапог
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!