なんとなくDBIx::Simpleとかプラグインにしておこうかと思ったから、気になっただけなんだけど。
たとえば、こんな感じ?
package Class::Component::Plugin::DBIS;
use strict;
use warnings;
use base 'Class::Component::Plugin';
use DBIx::Simple;
use SQL::Abstract;
sub dbis_connect : Method {
my($self, $c, $args) = @_;
my $DBIS = DBIx::Simple->connect(
@{$self->{config}->{connect_info}}
);
$DBIS->abstract = SQL::Abstract->new;
return $DBIS;
}
1;
で、これを元にMyClass用プラグインをつくったら、こうなるのかな?
package MyClass::Plugin::DBIS;
use strict;
use warnings;
usr base 'Class::Component::Plugin::DBIS';
1;
試してないけど、どうなんだろう。
もう今日は眠いから、明日試すか。。。
2/24 22:33 追記。
ばっちりうまく動いた。
でも、このソースはオススメできない。
確かに、プラグインは下記のやり方でロードできた。
use MyClass;
my $c = MyClass->new({
config => {
DBIS => {
connect_info => [qw[
dbi:mysql:myapp:mydbsv
mydbuser
mydbpass
]]
}
}
load_plugins => [qw/DBIS/]
});
でも、実際にDBからselectする場合、
my $DBIS = $c->dbis_connect;
my @members = $DBIS->select(
'member',
[qw[id name mail]],
{age=>{'>=',18}}
)->hashes;
のように、いちいちdbis_connectメソッドを呼び出してDBISインスタンスを生成しなきゃならん。これはいかにも面倒だ。しかも、毎回毎回connectしてたんじゃ、オーバーヘッドがハンパ無いことに。
オイラは、
$c->plugin('DBIS')->select(
'member',
[qw[id name mail]],
{age=>{'>=',18}}
)->hashes;
としたいのに。困った。。。
もう少しソースコード追ってみるか。。。
0 件のコメント:
コメントを投稿