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