请看以下内容:
编译时的输出结果如下:
为什么我关心这个问题呢?因为当我尝试使用CGI::Application::Plugin::*类时,它期望我在编译时已经从CGI::Application继承。插件类试图在我的类上调用add_callback作为类方法,但无法实现,因为我的@ISA还没有设置。
解决这个问题的最佳方法是什么?在BEGIN块中手动调整@ISA是否会干扰MooseX::NonMoose?
编辑
以下似乎可行,但我觉得很冒犯:
package MyApp::CGI;
use Moose;
use MooseX::NonMoose;
use Data::Dumper;
extends 'CGI::Application';
BEGIN {
print "begin isa = " . Dumper \@MyApp::CGI::ISA;
};
print "runtime isa = " . Dumper \@MyApp::CGI::ISA;
...
编译时的输出结果如下:
begin isa = $VAR1 = [
'Moose::Object'
];
runtime isa = $VAR1 = [
'CGI::Application',
'Moose::Object'
];
为什么我关心这个问题呢?因为当我尝试使用CGI::Application::Plugin::*类时,它期望我在编译时已经从CGI::Application继承。插件类试图在我的类上调用add_callback作为类方法,但无法实现,因为我的@ISA还没有设置。
解决这个问题的最佳方法是什么?在BEGIN块中手动调整@ISA是否会干扰MooseX::NonMoose?
编辑
以下似乎可行,但我觉得很冒犯:
package MyApp::CGI;
use Moose;
use MooseX::NonMoose;
use base 'CGI::Application';
extends 'CGI::Application';
我对Moose内部了解不足(实际上是一无所知),不知道这是否是一个好主意。