Fastcgi Catalyst是否在全球提供$c?

Fastcgi Catalyst是否在全球提供$c?,fastcgi,catalyst,Fastcgi,Catalyst,是否仍然可以访问$c,而无需传递?我有一个运行在CGI::Application中的第三方库,我使用Catalyst::Controller::WrapCGI引导它。将$c放入正在调用的代码中以便准备将其迁移到Catalyst的最佳方法是什么 如果无法访问,如何在应用程序上下文中访问$c?否 至少就我所知,但它给了你一个如何实现它的想法。他们只是做了一个全局访问器,如果它起作用。。有效吗 our $__ACTIVE_CTX; sub ctx { $__ACTIVE_CTX } around '

是否仍然可以访问
$c
,而无需传递?我有一个运行在
CGI::Application
中的第三方库,我使用
Catalyst::Controller::WrapCGI
引导它。将
$c
放入正在调用的代码中以便准备将其迁移到Catalyst的最佳方法是什么

如果无法访问,如何在应用程序上下文中访问
$c

否 至少就我所知,但它给了你一个如何实现它的想法。他们只是做了一个全局访问器,如果它起作用。。有效吗

our $__ACTIVE_CTX;
sub ctx { $__ACTIVE_CTX }

around 'dispatch' => sub {
  my ($orig, $c, @args) = @_;
  local $__ACTIVE_CTX = $c;
  $c->$orig(@args)
};
但是,在你自己动手之前,先看看这个模块,它正好解决了这个问题。摘自大纲:

package MyApp::Controller::Root;

use CatalystX::GlobalContext ();

sub auto : Private {
    my ($self, $c) = @_;
    CatalystX::GlobalContext->set_context($c);
    1;
}

package Some::Other::Module;

use CatalystX::GlobalContext '$c';

...
do stuff with $c
...