使用Codeigniter框架时业务逻辑应该写在哪里:控制器还是模型?

问题描述 投票:0回答:1

如果您使用 Codeigniter 框架,您已经构建了两个名为

controllers
models
的文件夹。开发 Web 应用程序时,我应该在
controllers
models

中编写业务逻辑

我还想知道我是否将业务逻辑保留在

models
中。我应该将业务逻辑和数据库查询部分分开还是将两者放在同一个类中?

php codeigniter model-view-controller
1个回答
1
投票

通常最好将业务逻辑保留在模型和控制器之外,将其放入服务中,这些服务只不过是为您的业务逻辑提供服务的类。例如,如果您有一个通知系统,您可能有一个

NotifierInterface
,然后是
EmailNotifier
SmsNotifier
等。该模型只是一个 POPO(普通旧 PHP 对象),仅封装数据,没有其中有额外的逻辑。控制器是 HTTP 层(请求/响应)和逻辑/模型之间的小粘合剂。

您可以创建一个

services
文件夹并将它们放在那里。

也就是说,您可以按照自己的意愿组织它。有些框架(例如 CI)为您提供了基本的文件结构,但没有人强迫您这样做。以通知程序为例,在我的应用程序中,我拥有以下内容:

src/
    Notifier/
        Email/
            MandrillNotifier
            MailgunNotifier
        Sms/
            TwillioNotifier

例如,我的应用程序中的

controllers
位于
src/Http/Controller
下。

© www.soinside.com 2019 - 2024. All rights reserved.