내가 만들고있는 Catalyst 제품에는 본질적으로 똑같은 여러 가지 서브 루틴이 있지만 모두 앱의 다른 부분에 있습니다. Catalyst에서 어디에서든지 서브 루틴을 호출 할 수있는 중앙 위치가 있습니까? 나는 코드 반복을 피하고 싶다. 감사!촉매 글로벌 서브 루틴
1
A
답변
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();
...
}
2
1
예를 들어 모델에서 사용하기 때문에 함수가 Catalyst 응용 프로그램 외부에서 사용 가능해야하는 경우 완전히 독립적 인 모듈로 이동해야합니다. 정말로 Catalyst에만 해당되는 경우 403 허용되지 않음 또는 404 찾을 수 없음 오류 페이지와 같이 전달하거나 분리 할 수있는 개인 작업을 생성 할 수 있습니다. 정상적인 Perl 서브 시스템이라면 mob이나 Root 컨트롤러가 제안한대로 앱 클래스에 넣을 수 있습니다. 더 나은 솔루션을 제공 할 수 있도록 함수의 이름을 지정할 수 있습니까?