我想编写一个DBI包装器,提供select / insert / update / delete,用户可以选择使用哪个数据库。我对于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不同,我现在还不太了解它,只需复制并模拟它。
感谢。
答案 0 :(得分:3)
如果您正在寻找一个ORM,其中db表和记录映射到对象,并提供插入,更新和选择等数据操作方法,请参阅DBIx::Class或Rose::DB::Object。每个都有它的优点和缺点,但Rose :: DB :: Object可能稍微容易上手。