Трябва да знам дали тази практика за използване на модули е добре или не:
MyApp.pm
package MyApp;
use Moose;
use MyApp::View;
use MyApp::Config;
sub view {
return MyApp::View->new;
}
sub config {
return MyApp::Config->new;
}
Моето приложение / View.pm
package MyApp::View;
use Moose;
extends qw(MyApp);
sub render {
}
Моето приложение / 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();
....
Аз съм объркан, тъй като използвах "използвайте MyApp :: View" в MyApp, след това използвах "extends qw (MyApp);" в модул Config. Това се счита за лош цикъл?
Идеята за това искам да споделя всички методи и променливи в MyApp модула с модулите View и Config в същия случай в App.cgi.
Отговори:
3 за отговор № 1Това е доста нормално и не особено лошо. Единственото предупреждение е това докато компилирате и изпълнявате тялото на пакета за MyApp::View
и MyApp::Config
, MyApp
няма да бъде напълно компилиран и някои от неговите методи може да не съществуват, защото MyApp
не мога да продължа да компилирам до след MyApp::View
и MyApp::Config
зареди. По време на нормалното изпълнение на приложението (след use MyApp
завършва), няма такъв проблем. Тъй като не правите нищо интересно в BEGIN
блокове или в самите пакети, не виждам проблем.