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 № 1Questo è 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.