Разработка общего интерфейса базы данных на PHP - PullRequest
11 голосов
/ 17 марта 2010

Я создаю небольшой фреймворк для своих веб-проектов на PHP, поэтому мне не нужно выполнять основную работу снова и снова для каждого нового веб-сайта. Я не ставлю своей целью создание второго CakePHP или Codeigniter, и я также не планирую создавать свои веб-сайты с какой-либо из доступных платформ, так как я предпочитаю использовать вещи, которые я создал сам в общем.

У меня не было проблем при разработке и кодировании инфраструктуры, когда речь идет о таких элементах, как структура ядра, обработка запросов и т. Д., Но я застрял при разработке интерфейса базы данных для моих модулей.

Я уже думал об использовании шаблона MVC, но обнаружил, что это будет немного излишним для моих довольно небольших проектов.

Так что точная проблема, с которой я сталкиваюсь, заключается в том, как мои модули каркасов (например, viewCustomers могут быть модулями) должны взаимодействовать с базой данных.

  • Является ли (все еще) хорошей идеей смешивать SQL непосредственно с PHP-кодом? (Будет "по-старому": mysql_query( 'SELECT firstname, lastname(.....))?

  • Как я могу абстрагировать запрос, подобный следующему?

    SELECT firstname, lastname FROM customers WHERE id=X
    

Будет ли MySQL "вспомогательным" функционировать как

$this->db->customers->getBy( 'id', $x );

хорошая идея?

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

  • Является ли модель "Модель" из MVC моей единственной реальной возможностью решить эту проблему?

  • Что вы используете в настоящее время для решения проблем, указанных выше?

Ответы [ 11 ]

0 голосов
/ 17 марта 2010

Поймите это: взаимодействие с базой данных является решенной проблемой.

Так что, если вы действительно не хотите это сделать а) для опыта или б) потому что вы ОКР и хотите знать каждый символ кода, который вы будете использовать, тогда я бы выбрал существующее решение.

И их много: PEAR :: MDB2, Zend :: Db, Creole, Doctrine, Propel, и это только некоторые из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...