Рассмотрим следующее:
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'
];
Почему меня это волнует? Потому что, когда я пытаюсь use
класс CGI :: Application :: Plugin :: *, он ожидает, что я наследую от CGI::Application
во время компиляции. Класс плагина пытается вызвать add_callback
как метод класса в моем классе, но не может, потому что мой @ISA
еще не настроен.
Какой лучший способ решить это? Будет ли настройка @ISA
вручную в блоке BEGIN
мешать работе MooseX::NonMoose
?
Редактировать
Кажется, работает следующее, но я нахожу это оскорбительным:
package MyApp::CGI;
use Moose;
use MooseX::NonMoose;
use base 'CGI::Application';
extends 'CGI::Application';
Я не знаю достаточно (или вообще ничего) о внутренностях Муз, чтобы понять, хорошая ли это идея.