我需要知道这种使用模块的做法是否正常:
MyApp.pm
package MyApp;
use Moose;
use MyApp::View;
use MyApp::Config;
sub view {
return MyApp::View->new;
}
sub config {
return MyApp::Config->new;
}
MyApp的/ View.pm
package MyApp::View;
use Moose;
extends qw(MyApp);
sub render {
}
MyApp的/ Config.pm
package MyApp::Config;
use Moose;
extends qw(MyApp);
sub get {
}
App.cgi
#App.cgi
use Moose;
extends qw(MyApp);
my $view = MyApp->view();
my $config = MyApp->config();
....
我很困惑,因为我使用了#34;使用MyApp :: View"在MyApp中然后使用"扩展qw(MyApp);"在Config模块中。那被认为是不好的循环吗?。
关于这一点的想法我想在AppApp中的同一个实例中使用View和Config模块共享MyApp模块中的所有方法和变量。
答案 0 :(得分:3)
这很正常,并不是特别糟糕。唯一需要注意的是在编译和运行MyApp::View
和MyApp::Config
的包体时,MyApp
将无法完全编译,其中一些方法可能会不存在,因为在MyApp
和MyApp::View
加载之后,MyApp::Config
无法继续编译。在应用程序的正常执行期间(use MyApp
完成之后),没有这样的问题。由于您在BEGIN
块或包体中没有做任何有趣的事情,我没有看到任何问题。