在使用Codeigniter框架时,我应该在哪里编写业务逻辑:控制器或模型?

时间:2016-09-12 06:36:58

标签: php codeigniter

如果您使用Codeigniter框架,则您已经建立了两个名为controllersmodels的文件夹。在开发我应该编写业务逻辑的Web应用程序时,在controllersmodels

我还想知道我是否将业务逻辑保留在models中,然后我应该将业务逻辑和数据库查询部分隔离开来,还是将它们放在同一个类中。

1 个答案:

答案 0 :(得分:1)

通常最好将业务逻辑保留在模型和控制器之外,将其放入 services ,这些只是为业务逻辑提供服务的类。例如,如果您有通知系统,则可能有NotifierInterface,然后是EmailNotifierSmsNotifier等。该模型只是一个POPO(普通旧PHP对象),仅封装数据而不包含额外的逻辑。控制器是HTTP层(请求/响应)与逻辑/模型之间的小粘合剂。

您可以创建一个services文件夹并将其放在那里。

那就是说,你可以按照自己的意愿组织它。像CI这样的一些框架为您提供了基本的文件结构,但没有人强迫您这样做。以Notifier为例,在我的应用程序中,这就是我所拥有的:

src/
    Notifier/
        Email/
            MandrillNotifier
            MailgunNotifier
        Sms/
            TwillioNotifier

例如,我的应用中的controllers位于src/Http/Controller