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
...