/ / Moduli di uso ciclico Perl - perl, alci

Moduli perl uso ciclico - perl, alce

Devo sapere se questa pratica per usare i moduli va bene o no:

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();
....

Sono confuso da quando ho usato "usa MyApp :: Visualizza" in MyApp quindi ho usato "extends qw (MyApp);" nel modulo Config. È considerato cattivo ciclico?

L'idea al riguardo voglio condividere tutti i metodi e le variabili nel modulo MyApp con i moduli View e Config nella stessa istanza in App.cgi.

risposte:

3 per risposta № 1

Questo è abbastanza normale e non particolarmente negativo. L'unica avvertenza è quella durante la compilazione e l'esecuzione del corpo del pacchetto per MyApp::View e MyApp::Config, MyApp non sarà completamente compilato e alcuni dei suoi metodi potrebbero non esistere, perché MyApp non è possibile continuare a compilare fino a dopo MyApp::View e MyApp::Config caricare. Durante la normale esecuzione dell'app (dopo use MyApp completa), non esiste un problema del genere. Dato che non stai facendo nulla di interessante in BEGIN blocchi o nei corpi dei pacchetti stessi, non vedo alcun problema.