如果您使用Codeigniter框架,则您已经建立了两个名为controllers
和models
的文件夹。在开发我应该编写业务逻辑的Web应用程序时,在controllers
或models
?
我还想知道我是否将业务逻辑保留在models
中,然后我应该将业务逻辑和数据库查询部分隔离开来,还是将它们放在同一个类中。
答案 0 :(得分:1)
通常最好将业务逻辑保留在模型和控制器之外,将其放入 services ,这些只是为业务逻辑提供服务的类。例如,如果您有通知系统,则可能有NotifierInterface
,然后是EmailNotifier
,SmsNotifier
等。该模型只是一个POPO(普通旧PHP对象),仅封装数据而不包含额外的逻辑。控制器是HTTP层(请求/响应)与逻辑/模型之间的小粘合剂。
您可以创建一个services
文件夹并将其放在那里。
那就是说,你可以按照自己的意愿组织它。像CI这样的一些框架为您提供了基本的文件结构,但没有人强迫您这样做。以Notifier为例,在我的应用程序中,这就是我所拥有的:
src/
Notifier/
Email/
MandrillNotifier
MailgunNotifier
Sms/
TwillioNotifier
例如,我的应用中的controllers
位于src/Http/Controller
。