/ / Perl циклични модули за използване - perl, loose

Perl циклични модули за употреба - perl, moose

Трябва да знам дали тази практика за използване на модули е добре или не:

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 блокове или в самите пакети, не виждам проблем.