加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:28:53 所属栏目:大数据 来源:网络整理
导读:我以为我真的不明白为什么催化剂中的所有东西都使用了上下文对象.似乎一切都从一开始 my ( $self,$c ) = @_; 我们用催化剂模型包装DBIC并最终得到 $c-model('DBIC::Table') ... 或许我们这样做 $c-log-warn('foo'); 但我不明白为什么我们不这样做 log('warn'
我以为我真的不明白为什么催化剂中的所有东西都使用了上下文对象.似乎一切都从一开始

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)有助于您理解.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读