Класс базы данных PHP - PullRequest
       9

Класс базы данных PHP

2 голосов
/ 15 июня 2009

Лучше ли использовать предварительно созданный класс / API для взаимодействия с базой данных (например, Pear MDB2 или PDO php) или создать свой собственный?

Я буду использовать только mysql с 1 базой данных и буду выполнять относительно простые запросы SELECT, INSERT, UPDATE, DELETE.

Ответы [ 6 ]

5 голосов
/ 15 июня 2009

Для небольших личных проектов я предпочитаю использовать свой собственный класс интерфейса БД по сравнению с предварительно созданными, но другие люди клянутся с помощью предварительно созданных API. Создавая свой собственный класс, вы почти гарантированно будете изобретать велосипед. Использование предварительно созданного API обычно требует только того, чтобы вы научились выполнять команды в этом API. Если вы работаете с командой программистов, я рекомендую использовать хорошо документированный API и включать его использование в ваши лучшие практики и процедуры. По своему опыту я почувствовал, что командное программирование и домашние классы БД плохо сочетаются.

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

[Правка - Исправлена ​​какая-то действительно плохая грамматика]

1 голос
/ 15 июня 2009

Я не большой поклонник фреймворков, но они предлагают некоторые преимущества. На работе мы используем Zend Framework (Zend_DB) для подключения к базе данных. Я вижу как минимум два преимущества использования фреймворка:

  1. Легко Zend_Cache поверх Zend_DB.
  2. Простой в использовании интерфейс Zend для регистрации запросов SQL в FirePHP (включает подготовленный запрос и время его выполнения).

Эти две функции могут быть весьма полезны.

1 голос
/ 15 июня 2009

Обязательно используйте PDO или mysqli напрямую для вашей ситуации.

Единственная причина, по которой я бы использовал слой абстракции DB, - это если вы планируете писать распространяемое программное обеспечение, которое должно работать на нескольких RDBM.

Если вы знаете свою цель (просто mysql) и собираетесь написать приложение, которым управляете, вообще пропустите уровень абстракции db. Когда вы, наконец, попадаете в ситуацию, когда вам нужно переключиться, вам все равно придется часто переписывать множество запросов (если только вы не используете идеальный стандартный SQL, который вроде как поддерживается везде).

Рефакторинг является ключевым, абстракция может только усложнить вещи.

1 голос
/ 15 июня 2009

Для чего-то такого важного, как взаимодействие с базой данных, я бы выбрал готовое решение, такое как PDO или mysqli. Зачем проходить все проблемы переписывания класса доступа к базе данных, когда все, что вам нужно, уже создано? Если вам нужна функциональность, которая не включена, вы всегда можете расширить ее.

1 голос
/ 15 июня 2009

Существует множество качественных API для обычных СУБД, и обычно рекомендуется использовать их, если у вас нет особых требований, которые эти API не реализуют. Хорошее эмпирическое правило - не изобретать велосипед, а расширять его при необходимости.

Zend Framework имеет множество доступных API RDBMS и довольно популярен. Каркас спроектирован так, что вам не нужно использовать весь каркас. Вам просто нужно использовать оператор включения для включения необходимого класса (классов) в ваш код.

1 голос
/ 15 июня 2009

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

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

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