1

私が構築している Catalyst アプリには、本質的に同じことを行ういくつかのサブルーチンがありますが、それらはすべてアプリの異なる部分にあります。アプリのどこからでもサブルーチンを呼び出せる Catalyst の中心的な場所はありますか? コードの繰り返しは避けたいです。ありがとう!

4

3 に答える 3

3

これがベスト プラクティスかどうかはわかりませんが、このような関数でメイン モジュールが雑然としていても問題はありません。その後、コンテキスト オブジェクトがある場所 (つまり、どこでも) から簡単に呼び出すことができます。

 package MyApp;
 ...
 sub my_frequently_used_sub {
     my ($c, @args) = @_;
     ...
 }


 package MyApp::Controller::Foo;
 ...
 sub some_action :Path {
     my ($self, $c, @args) = @_;
     ...
     my $result = $c->my_frequently_used_sub();
     ...
 }
于 2012-08-13T21:30:49.637 に答える
2

CatalystMoose今を基準に。その役割をソリューションとして使用できます。

于 2012-08-13T21:37:36.747 に答える
1

関数がモデルで使用されているなどの理由でCatalystアプリの外部で使用できるようにする必要がある場合は、完全にスタンドアロンのモジュールに入れる必要があります。それらが本当にCatalyst固有である場合は、転送またはデタッチして403notallowedまたは404notfoundエラーページのようにプライベートアクションを作成することをお勧めします。それらが通常のPerlサブである場合は、mobまたはRootコントローラーによって提案されているようにアプリクラスに入れることができます。より良い解決策を提供できるように、いくつかの関数に名前を付けていただけますか?

于 2012-10-30T13:10:53.567 に答える