我正在开发一个传统的CakePHP项目(CakePHP 1.3),而且我很难搞清楚共享模型逻辑的放置位置。我来自Laravel背景,通常会制作服务类或Laravel外观并在需要时使用它,但这似乎不是Cake的做事方式。 (也许我对此错了?)
项目使用哈希生成唯一的数据库密钥。哈希函数本身位于/vendors
。有几个辅助函数用于生成散列,解码散列等,这些函数目前在几个不同的模型中重复。理想情况下,我想将这些函数提取到一个类中,并从需要它们的模型中静态调用它们:Hash::make($params)
,Hash::decode($hash)
等。我怎么能在CakePHP应用程序中设置它?
答案 0 :(得分:3)
CakePHP 1.3很老了。所以你基本上处理的是甚至没有使用命名空间的框架版本。但是,这并不妨碍您使用它们。它也不再受到官方支持。
如果你称之为模特或服务,我认为只要你正确地分离你似乎关心的问题 - 这是好的,这并不重要。
只需创建在模型文件夹中抽象逻辑所需的任何类。在你的特殊情况下,我认为a behavior也可以起作用,而不是实现大量的静态方法,这会导致紧耦合。创建一个HashBehavior以在表对象上获得可重用的代码。实际上我不喜欢Laravel所有它的静力学(是的,我知道外墙但仍然......)。听起来像你继承了一些编写得不好的代码,祝你的重构好运!
答案 1 :(得分:-2)
是的,1.3是一个非常古老的项目(如你所知)。 将您的共享代码放在 AppModel 类
中