CakePHP:在哪里放置共享模型逻辑?

CakePHP: where to put shared model logic?

我正在处理遗留的 CakePHP 项目 (CakePHP 1.3),我很难弄清楚将共享模型逻辑放在哪里。我来自 Laravel 背景,通常会制作服务 class 或 Laravel 外观并在需要的地方使用它,但这似乎不是 Cake 做事的方式。 (也许我对此有误??)

该项目使用哈希生成唯一的数据库密钥。哈希函数本身在 /vendors 中。有几个辅助函数用于生成散列、解码散列等,这些目前在几个不同的模型中重复出现。理想情况下,我想将这些函数提取到单个 class 并从需要它们的模型中静态调用它们:Hash::make($params)Hash::decode($hash) 等。我如何在 CakePHP 中进行设置申请?

是的,1.3 是一个非常古老的项目(如您所知)。 将您的共享代码放入 AppModel class

CakePHP 1.3 非常旧。所以你基本上是在处理一个甚至不使用命名空间的框架版本。但是,这并不妨碍您使用它们。而且官方也不再支持了。

如果您将其称为模型或服务,我认为这并不重要,只要您适当地分离您似乎关心的关注点 - 这很好。

只需创建任何 类 您需要在模型文件夹中抽象逻辑即可。在你的特殊情况下,我认为 a behavior 也可以工作,而不是实现大量导致紧密耦合的静态方法。创建 HashBehavior 以在 table 对象上获取可重用代码。实际上我不喜欢 Laravel 因为它是静态的(是的,我知道立面但仍然......)。听起来您继承了一些编写得不太好的代码,祝您重构顺利!