2012-01-10 10 views
-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とは異なりますが、私はそれを今すぐ理解していません。単にコピーしてシミュレートしてください。

ありがとうございました。

+2

Perl-DBIがすでにオブジェクト指向のモジュールであることを考慮して、私はあなたが達成したいことを100%確信していません。 Perl-DBIは、あなたがしたいと言ったことすべてを行います。あなたはあなたが何をしているかを明確にすることができますか?ちなみに、OO-Perlを学びたいならば、さまざまな[Perlチュートリアル](http://perldoc.perl.org/index-tutorials.html)を見てください。これらはオンラインで入手できます。 'perldoc'コマンドでコマンドラインを実行します。 –

+0

ありがとうございます。 DBIの部分だけを忘れてしまいます。私が知りたいことは、MyDBI.pmの新しいサブ機能です。それとも未知の問題がありますか? – everbox

+0

今日OO perlを使い始めるなら、[Moose](https://metacpan.org/module/Mose)から始めるべきでしょう。そしておそらくhttp://codereview.stackexchange.com/をチェックしてください – derobert

答えて

3

dbテーブルとレコードがオブジェクトにマップされ、insert、update、selectなどのデータ操作メソッドを提供するORMを検索する場合は、DBIx::ClassまたはRose::DB::Objectを参照してください。それぞれに長所と短所がありますが、Rose :: DB :: Objectはやや簡単に始めることができます。

関連する問題