gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:57:04 26 4
gpt4 key购买 nike

我在想我真的不明白为什么催化剂中的几乎所有东西都使用上下文对象。似乎一切都始于

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)帮助您理解。

此外,通过将所有功能包装在上下文变量中,您不会遇到任何命名空间问题。 Controller 、模型等类只需具有它们在其命名空间中声明的方法。

关于perl - 我们为什么要使用 Catalyst 的 Context 对象?它的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com