如果用面向对象的方法来封装的话,例如Dhandler这样写就可以了
if ( $r->uri =~ /favicon\.html/i || $r->uri =~ /api\/favicon/i ) {
my $application = new FaviconApplication( 'favmx', $r, $m
);
$application->fetch_favicon;
}
elsif ( $r->uri =~ /vimage\.html/i ) {
my $application = new AuthVCodeApplication( 'favmx', $r,
$m );
$application->generate_vimage;
}
elsif ( $r->uri =~ /api\//i || $r->uri eq '/' ) {
my $application = new AuthFavApplication( 'favmx', $r, $m
);
$application->set_account_memd( $account_memd );
$application->process;
}
elsif ( $r->uri =~ /fav\//i ) {
my $application = new Max1FavApplication( 'favmx', $r, $m
);
$application->process;
}
else {
$m->redirect( '/api/fav' );
}
Autohandler里没内容了
<%flags>
inherit => '/dhandler'
</%flags>
应用程序完全封装成Application类了,在里面分成各个function进行业务逻辑处理和
页面跳转。
例如
$self->log_error( $request->param('error') );
$self->mason->abort( 200 );
Or
if ( !$self->is_authorized ) {
return $self->mason->comp(
$AuthFavApplication::UNAUTHORIZED_PAGE, 'application' => $self );
}
else {
return $self->mason->comp(
$AuthFavApplication::AUTHORIZED_PAGE, 'application' => $self );
}
发件人: [email protected] [mailto:[email protected]] 代表
Mike.G
发送时间: 2009年8月20日 11:29
收件人: [email protected]
主题: [PerlChina] Re: IiBlog发布了
好的。我一直想这个问题。
如果完全是基于mason来弄,就像是基于页面的开发模式。
也就是说一个请求动作要在整个页面里完成的。
好像需要把所有的请求放入这个页面里面。我不太喜欢这种。
不知道能不能这样。
比如说定义个db_handle
在这个里面结果所有的请求。
比如说目录:
/app/dbhandlers
然后在这个文件里接管所有请求,
请求玩了之后,
再forward其他的显示页面。
自己只是这么想。
没有自己写。
*^-^*
2009/8/20 Beckheng Lam <[email protected]>
我也是在不停的修改呢。多交流交流哈。
Mike.G wrote:
哦。我很粗的看了一眼。
好像看到你的代码里面夹杂了数据库的查询语句来着。
我也一直想用mason,但是一直没找到一个自己喜欢的代码模式。
2009/8/19 Beckheng Lam <[email protected]>
Mike, 是用Mason写的。你说的混合在HTML是指很多内容输入合并在HTML里面吗?
Mike.G wrote:
咦,是用Mason写的?
不过好多代码都好像完全的混合在html里了啊。
2009/8/19 Beckheng Lam <[email protected]>
基于HTML::Mason的 IiBlog,包含 文章发布、图片集、投票、留言管理。
链接地址:http://code.google.com/p/iiblog/
欢迎大家提出意见。
--
Perl乐事 -- http://www.perlersh.org
我的博客 -- http://www.perlersh.org/blog.html
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。
要在此论坛发帖,请发电子邮件到 [email protected]
要退订此论坛,请发邮件至 [email protected]
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---