DBI wrapper를 작성하고 select/insert/update/delete를 제공하고 사용자가 사용할 데이터베이스를 선택할 수 있습니다. 나는 perl에 매우 익숙하다. 나는 옳은 일을하고 있는지 잘 모른다. 그것을 검토하고 말씀해 주시겠습니까? 그리고 모든 조언을 부탁드립니다.OO를 사용하여 인터페이스와 같은 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 Tutorials] (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