Я хочу предоставить Perl DBI-подобный интерфейс, используя OO - PullRequest
0 голосов
/ 10 января 2012

Я хочу написать обертку DBI, предоставить выбор / вставить / обновить / удалить, и пользователи могут выбирать, какую базу данных использовать.Я очень плохо знаком с Perl OO, я не знаю, что я делаю правильно или нет?Не могли бы вы рассмотреть это и сказать мне?И любые советы приветствуются.

Мой каталог оболочки выглядит следующим образом:

MyDBI.pm
MyDBI/SQLite.pm
MyDBI/MySQL.pm

MyDBI.pm:

package MyDBI;
sub new {
    shift; # discard parent class
    my $database=shift || 'MySQL';
    eval {
      require "MyDBI/$database.pm";
    } or die "$database not found\n";

    my $self="MyDBI::$database"->new;
    bless($self,"MyDBI::$database");
    return $self;
}
sub insert { print "parent insert"; } # children will override it

MyDBI / MySQL.pm:

package MyDBI::MySQL;
require MyDBI;
@ISA=qw(MyDBI);
use DBI;use DBD::mysql;
sub new { #...} # not special
sub insert { print "mysql insert"; }

пользовательский скрипт:

use MyDBI;
my $dbi=MyDBI->new('SQLite');
$dbi->insert;

Это будет работать?MyDBI :: new отличается от perltoot, я не совсем понимаю это сейчас, просто скопируйте и смоделируйте его.

Спасибо.

1 Ответ

3 голосов
/ 10 января 2012

Если вы ищете ORM, где таблицы и записи базы данных отображаются на объекты и которые предлагают методы манипулирования данными, такие как вставка, обновление и выбор, то смотрите DBIx :: Class или Rose:: DB :: Object .У каждого есть свои плюсы и минусы, но для запуска Rose :: DB :: Object может быть немного проще.

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