php - MVC 中的服务去哪里了?

标签 php oop object model-view-controller service

<分区>

我问过几个开发者,每次都得到不同的答案。

假设我在 MVC 框架中工作,并且我有一个名为 validator 的类。假设这个对象有一堆方法可以用来告诉你电子邮件或电话号码是否有效,或者给定的值是否确实包含内容。

假设我想让这个服务成为我正在创建的模型的属性。我可以简单地将它注入(inject)到我的模型类的构造方法中。但是,此服务在 MVC 中的什么位置适合?是模型吗?

文件应该存放在哪里?与模型?在它自己的目录中,也许叫做 services

最佳答案

我认为我对 mvc 中的模型有不同的看法 [遗憾的是没有双关语],但服务绝对应该进入模型层。

首先,模型不应该是类。该模型是一个模型,属于一个应用程序。应用程序在不同的事物中建模(包含在模型层中):实体、映射器、服务。

例如,这可能是代表这个概念的文件层次结构:

application
    Controller
    Model
        Entities
        Mappers
        Services
    View

Say I want to make this service a property of a model that I'm creating. I can simply inject it into the construction method of my model class. However, where does this service fit in in MVC? Is it a model?

我会假设“模型”如您所说,它确实是一个实体,一个代表领域概念的对象。在这种情况下,服务不应是实体的属性。 Controllers 应该使用服务来做他们被调用要做的任何事情,然后 Mappers 会根据服务所做的结果构建您的实体。


我目前的理解很大程度上来自this答案,你一定要阅读它以加深理解。

关于php - MVC 中的服务去哪里了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579325/

相关文章:

php - 本地主机中日期值的差异

php - 排序desc后mysql中的下一条和上一条记录

sql - 是否有任何 T-SQL 库可以将其转变为面向对象?

javascript - 获取资源作为控制台输出

php - MySQL 通过一个查询获取多个值并将它们转换为可打印变量

javascript - Lodash key与数组具有相同的属性

php - 每次我尝试导入 Drupal 数据库时,MySQL 服务器都消失了

php - 将mysql数据库中的字符串转换为数组

oop - 返回 null 是不好的设计吗?

c++ - C++中的类继承和向上转型