Простая абстракция базы данных для PHP и MySQLPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Простая абстракция базы данных для PHP и MySQL

Сообщение Anonymous »

Это мой первый пост здесь, дайте мне знать, смогу ли я улучшить вопрос.

Я занимаюсь обновлением веб-сайта. Вкратце: он обрабатывает подписки пользователей и отслеживает продажи (продуктов, которые я делаю). Я хочу оставить открытыми возможности для добавления в него новых функций в ближайшем будущем. Он построен с использованием PHP и MySQL.

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

Я поигрался с ezSQL, который позволяет мне очень кратко взаимодействовать с базой данных. , например:

Код: Выделить всё

$users = $db->get_results("SELECT name, email FROM users");
foreach ( $users as $user ) {
// Access data using object syntax
echo $user->name;
echo $user->email;
}
Мне это очень нравится: я быстро получаю объект, который могу использовать, и это делает код более удобным для чтения, без необходимости использования большого количества функций mysql_* и SQL-запросов. повсюду, в отличие от того, как это было раньше.

Если это удобно для запросов SELECT, то для операторов INSERT это не очень помогает, и в конечном итоге я могу с кодом, который выглядит следующим образом:

Код: Выделить всё

$db->query( "INSERT INTO    users    (name, email, date, hostname, cid, code, email_id, email_date, source, ebook, audiobook )
VALUES    ( '" . $db->escape( $user->name ) . "',
'" . $db->escape( $user->email ) . "',
'" . $db->escape( $user->date ) . "',
'" . $db->escape( $user->hostname ) . "',
'" . $db->escape( $user->cid ) . "',
'" . $db->escape( $user->code ) . "',
'" . $db->escape( $user->email_id ) . "',
'" . $db->escape( $user->email_date ) . "',
'" . $db->escape( $user->source ) . "',
'" . $db->escape( $user->ebook ) . "',
'" . $db->escape( $user->audiobook ) . "')"
);
Могло быть и хуже, но проходить через это все равно не так приятно. Хуже всего для меня то, что это совсем не так просто, как в предыдущем примере.

Итак, учитывая следующую структуру таблицы и объект PHP:

Код: Выделить всё

$user = new User();
$user->name = 'something';
$user->email = 'something@example.com';
/// etc.

class User {
var $name;
var $email;
// etc.
}
Мне нужна простая библиотека, которая позволяет мне делать именно это:

Код: Выделить всё

$user->insert();
...и сопоставляет каждого члена класса с одноименным столбцом в базе данных и вставляет соответствующие данные.

У меня вопрос: есть ли такая библиотека? Если нет, то почему это плохая идея.

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

Поэтому мне было интересно узнать об уровнях абстракции базы данных для PHP. (например: ADOdb, PDO), но мне пока неясно, предназначены ли они в основном для того, чтобы сделать написание кода короче (мое предполагаемое использование) или облегчить написание кода для различных баз данных. Я не против того, чтобы мой код работал только с MySQL. Я просто хочу абстрагировать это для ясности, а не совместимости.

Вместо того, чтобы тестировать каждый DAL для PHP, мог бы кто-нибудь предоставить отзыв, основанный на опыте и простое использование по назначению, описанное выше?

Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/137 ... -and-mysql
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»