ФорумПрограммированиеPHP для идиотов → Класс для работы с БД

Класс для работы с БД

  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 1:47

    Написал свой класс для работы с бд.
    Идеологически очень схож с goDB (использовался в качестве основы), но другой синтаксис + заточка под ND.
    Что отличается:
    Другие плейсхолдеры. Пример:
    $res=$db->query('SELECT #0 FROM #1 WHERE `user`.`id` = &2 AND 
    `user`.`name` = $3', array('user.id', 'db.user', 5, 'somebody'))

    Синглтон
    Ну и использование ND
    Сейчас думаю, что к ней надо еще прикрутить. Ожидаю советов и замечаний.
    Если надо, могу выложить исходники…
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 1:56, спустя 8 минут 14 секунд

    Batler, уверен что сам класс для работы с бд не должен быть синглотоном. синглтоном должна быть конечная реализация оного для работы в кмске сайтов визиток
    Сапожник без сапог
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 2:09, спустя 13 минут 12 секунд

    Я пока этот класс использую в одном месте…
    И оно не связано с управлением контентом. Потому он синглтон (пока). А так согласен. Не надо ограничивать количество коннектов к БД.
    Может сделать отслеживание всех объектов при создании (хранить массив с объектами в static поле?)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 2:23, спустя 14 минут 37 секунд


    Я пока этот класс использую в одном месте…
    И оно не связано с управлением контентом. Потому он синглтон (пока). А так согласен. Не надо ограничивать количество коннектов к БД.
    Может сделать отслеживание всех объектов при создании (хранить массив с объектами в static поле?)
    нахуй тебе саммоу отслеживать их? … ебанулся чтоли? -)))

    пусть отслеживает тот, кто плодит говнокод, тебе вот ни похуй?
    Спустя 25 сек.
    пора придумывать TrippleTon, который будет умеет работать с 3 ИНСТАНЦИЯМИ КЛАССА :-D

    ыыы. ржака
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 2:42, спустя 18 минут 14 секунд

    Batler, плейсхолдеры прикольные, хотя на деле только нужны для стринга, интов, списков и массивов (column = value, column = value)… Я о том, что имена таблиц и полей - нах не нужны, на практике…
    Спустя 15 сек.
    А то что можно указывать номер индекса - тру
    adw/0
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 2:55, спустя 12 минут 52 секунды

    Спасибо! Я этот стиль придумал давно давно, но вот реализация подоспела только сейчас.
    Для столбцов таблиц и названий баз сделал на всякий :) + оно автоматически обрамляет в бэктикс (``).
    & - приведение к типу инт.
    $ - реал_эскаип стринг.
    У себя в коде обнаружил еще и ? =) Чесное слово, пока не понял зачем я его сделал.

    + есть такая фишка:
    $db->query('SELECT * FROM `table` WHERE `id` = &0 OR `group_id` = &0', array(1))


    Ах да, для отмены действия достаточно добавить двойной плейсхолдер:

    &&0 ##1 $$2 и т. п. дадут &0 #1 и $2
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 3:04, спустя 9 минут 42 секунды


    нахуй тебе саммоу отслеживать их? … ебанулся чтоли? -)))

    пусть отслеживает тот, кто плодит говнокод, тебе вот ни похуй?
    Спустя 25 сек.
    пора придумывать TrippleTon, который будет умеет работать с 3 ИНСТАНЦИЯМИ КЛАССА :-D

    ыыы. ржака


    Зачем отслеживать? Хм, хороший вопрос. Я вообще не могу представить себе сценарий, где требуется открывать больше 2х коннектов к БД (и то второй коннект больше для параноидальной защиты).
    Тогда отслеживать их количество и сравнивать с числом максимально доступных коннектов =)
    Если создаешь больше - throw new Exception ('Больше НИ-НИ!')
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 3:06, спустя 2 минуты 5 секунд

    Я бы оставил:
    # - инт (1)
    $ - стринг ('test')
    & - список (1,2,3,4)
    ? - словарь (Array('one'=>1, 'two'=>'second') >> `one` = 1, `two` = 'second')
    adw/0
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 3:40, спустя 34 минуты 2 секунды


    & - список (1,2,3,4)
    ? - словарь (Array('one'=>1, 'two'=>'second') >> `one` = 1, `two` = 'second')


    В словаре не ясно как экранировать значения и как работать с числами, т.е.
    Если мы вставляем число, нам его не стоит обрамлять кавычками, да и вообще по хорошему надо бы его к типу инт/double привести +)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 3:50, спустя 10 минут

    Batler, '1' = 1 для мускуля, ему похуй, он сам разберет когда данные в таблицу будет втыкать, так что не запаривайся и экранируй просто ВСЕ.
    Сапожник без сапог
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 3:52, спустя 1 минуту 41 секунду

    Да я знаю.Выполняется медленнее :)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 4:15, спустя 23 минуты 20 секунд


    Да я знаю.Выполняется медленнее :)
    пиздишь.

    медленнее выполняется среднестатистический запрос нежели парсинг скл запроса
    Сапожник без сапог
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 4:54, спустя 38 минут 27 секунд

    Сервер будет тратить время на преобразование типов. Преобразование типов => увеличение времени.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 5:18, спустя 24 минуты 38 секунд


    Сервер будет тратить время на преобразование типов. Преобразование типов => увеличение времени.
    ты ебанулся? ….. ))))))))))))))))))))))

    Сапожник без сапог
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 5:31, спустя 12 минут 49 секунд

    Неа, справочная литература так говорит.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!