-2
DBIラッパーを作成し、選択/挿入/更新/削除を提供し、ユーザーが使用するデータベースを選択できるようにします。私は非常にperl OOには新しく、私は何をしているのか分からないのですか?それを見直して教えてください。そして、どんなアドバイスも感謝しています。OIを使用してperl DBIのようなインタフェースを提供したい
私のラッパーディレクトリは次のようになります。
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とは異なりますが、私はそれを今すぐ理解していません。単にコピーしてシミュレートしてください。
ありがとうございました。
Perl-DBIがすでにオブジェクト指向のモジュールであることを考慮して、私はあなたが達成したいことを100%確信していません。 Perl-DBIは、あなたがしたいと言ったことすべてを行います。あなたはあなたが何をしているかを明確にすることができますか?ちなみに、OO-Perlを学びたいならば、さまざまな[Perlチュートリアル](http://perldoc.perl.org/index-tutorials.html)を見てください。これらはオンラインで入手できます。 'perldoc'コマンドでコマンドラインを実行します。 –
ありがとうございます。 DBIの部分だけを忘れてしまいます。私が知りたいことは、MyDBI.pmの新しいサブ機能です。それとも未知の問題がありますか? – everbox
今日OO perlを使い始めるなら、[Moose](https://metacpan.org/module/Mose)から始めるべきでしょう。そしておそらくhttp://codereview.stackexchange.com/をチェックしてください – derobert