问候,
我正在学习驼鹿 ,我想写一个CGI ::应用与驼鹿,这是一个事实,即CGI-应用不是基于穆斯犯了难子类。
在我的其他CGI应用程序内的子类,我想有一个父类setup
,看起来在子类的符号表,并自动设置了runmodes方法。 我想我可以用驼鹿的元类设施,以实现一个更清洁的方式是一样的。 所以这是我在我的父类:
use MooseX::Declare;
class MyApp::CGI
extends Moose::Object
extends CGI::Application {
method setup {
$self->start_mode( 'main' );
my @methods = map { $_->name } $self->meta->get_all_methods;
$self->run_modes( map { /^rm_(.+)$/ => $_ }
grep { /^rm_/ }
@methods
);
}
}
......在我的子类:
use MooseX::Declare;
class MyApp::CGI::Login
extends MyApp::CGI {
method rm_main {
return "it works";
}
}
我意识到,我runmodes没有得到正确安装的原因是因为setup
是由CGI应用程序内的构造函数调用, Moose::Object
是坚持自己的构造在我的课。 我试图用一个方法修改来解决这个:
around new {
$self = $orig->( @_ );
$self->CGI::Application::new( @_ );
}
这给了我
Can't call method "BUILDARGS" on unblessed reference at ...Moose/Object.pm line 21.
我有一种感觉,但是,我在完全错误的方式去了解这一点,驼鹿实现一个更好的设施我想要什么,我至今还未发现。