2

是否有为所有可用的 Mojolicious 路线编写自动启动子程序/方法的方法/功能?

也许是一个自动助手,但我还不知道该怎么做。

我认为这对于为几乎所有可用路由初始化数据库连接 $self->{dbh} 尤其有用,......所以我可以这样写:

helper DB => sub { state $dbh = Database->new };

get '/' => sub {
    my $self = shift;
    //$self->{dbh}  // is automatically initialized & shared
};

get '/another_route' => sub {
    my $self = shift;
    //$self->{dbh}  // also initialized & shared

};

代替:

get '/' => sub {
    my $self = shift;
    $self->{dbh} = init_db();
};

get '/another_route' => sub {
    my $self = shift;
    $self->{dbh} = init_db();
};

PS:我正在使用 Mojolicious:Lite、Perl 5.16、SQLite3

4

1 回答 1

3

我不是 100% 确定我理解你的问题,helper几乎完全符合你的要求,但你不应该使用对象的散列。以下是您将如何使用您的代码:

helper db => sub { state $dbh = Database->new };

get '/' => sub {
    my $self = shift;
    $self->db->do_somthing();
};

get '/another_route' => sub {
    my $self = shift;
    my $dbh = $self->db;
    ...
};

helper方法可供所有控制器、模板和主应用程序使用。

于 2013-04-25T19:22:29.417 回答