perl – 为什么我们使用Catalyst的Context对象?它的目的是什么?

前端之家收集整理的这篇文章主要介绍了perl – 为什么我们使用Catalyst的Context对象?它的目的是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我以为我真的不明白为什么催化剂中的所有东西都使用了上下文对象.似乎一切都从一开始

my ( $self,$c ) = @_;

我们用催化剂模型包装DBIC并最终得到

$c->model('DBIC::Table') ...

或许我们这样做

$c->log->warn('foo');

但我不明白为什么我们不这样做

log('warn','foo'); # or whatever the API for some log library is.

为什么我们通过上下文对象做所有事情?是什么让它与众不同?

解决方法

如果我理解正确的是什么(并且我没有非常努力地查看催化剂,那么这很容易实现),上下文变量是调用框架.当请求进入时,框架会将所有信息构建到自身中,并且调用类中的方法传递自身,这样您的方法就可以访问所有这些信息以及框架的其余部分.您可能会发现阅读约 inversion of control(或IoC)有助于您理解.

此外,通过将上下文变量中的所有功能包装起来,您不会遇到任何名称空间问题.控制器,模型等类只需要在它们的命名空间中声明它们所声明的方法.

猜你在找的Perl相关文章