设置助手并让其处理所有常数,变量和数据是否被认为是好/坏体系结构?

我目前正在编写一个相当简单的扩展名与会员/非会员登录工作 - 主要是前端内容。在某些情况下要检查的“记住我”,在某些情况下要打开登录框,等等。使用cookie非常广泛,并且没有真正的数据库访问,而无需通过admin提供非常最小的配置选项。

有帮助吗?

解决方案

“常数,变量和数据”,对我来说听起来像'模型'的东西。

通常,答案将完全取决于您要解决的特定问题。但是我倾向于将这些类型的事物封装在模型中 - 即使它不需要使用数据库。

现在请记住,模型代表您的域(域表示业务/应用程序逻辑),而不仅仅是数据持久性。这可能会令人困惑,因为这些天人们看到的“模型”并立即思考数据库。

此规则的例外是您需要从块或模板访问行为。使用助手非常方便:

$this->helper('foomodule')->formatRefererenceNumber($myModel->getReferenceNumber())

这比替代方案要愉快得多(并且在计算上有效)

Mage::getModel('foomodule/model')->formatReferenceNumber($myModel->getReferenceNumber()

当然,您可能会认为不应该格式化ferferencenumber只是$ mymodel的方法吗?可能的是,是的。但是,将其放在帮手中可以使您可以将格式化参考号码与其存储的关注点分开。您可以轻松地指定替代格式选项 - 可能是跨不同助手 - 而无需权衡模型。

其他时间,您想在模型上使用助手是,如果您发现自己在模板中编写大量的PHP代码。假设您有一排排行,您希望奇数行是一种颜色,甚至是另一种颜色。我将这种功能提取到帮手中。

通常,我遵循的启发式是将业务数据和逻辑保留在模型中,并使用助手将数据转换为特定形式,以在前端呈现。

许可以下: CC-BY-SA归因
scroll top