实现我的第一个PHP模型

实现我的第一个PHP模型,php,mysql,model-view-controller,architecture,model,Php,Mysql,Model View Controller,Architecture,Model,我已经使用slimframework()编写了一个小型的restfulphp后端,它与一个MySQL数据库接口,现在我只有一个类来完成所有的DB交互,它变得有点大了。所以是时候把它组织得更干净一点了 因此,根据我对MVC的理解,更好的方法可能是实现如下模型层: 系统中的每个逻辑实体都将使用一个数据类实现。即用户帐户:一个名为“Account”的类,具有getId()、getName()、getEmail()等 以及相应的工厂对象,即AccountFactory,它拥有DB连接并创建一个Acco

我已经使用slimframework()编写了一个小型的restfulphp后端,它与一个MySQL数据库接口,现在我只有一个类来完成所有的DB交互,它变得有点大了。所以是时候把它组织得更干净一点了

因此,根据我对MVC的理解,更好的方法可能是实现如下模型层:

  • 系统中的每个逻辑实体都将使用一个数据类实现。即用户帐户:一个名为“Account”的类,具有getId()、getName()、getEmail()等
  • 以及相应的工厂对象,即AccountFactory,它拥有DB连接并创建一个Account类以在业务逻辑层的其他位置进行操作
  • 业务逻辑层仍然非常简单,可能是一个名为MyApplication的类,它实例化工厂并使用工厂响应RESTful API调用
  • 例如,业务逻辑可能是基于地理位置将两个帐户匹配在一起。因此,在本例中,我将只测试两个独立帐户对象中的数据,而不是从数据库加载的原始数据
但这似乎花费了很多重构时间来做基本相同的事情。为什么我不想只使用从数据库加载的普通数组数据呢?当然,它不是独立于数据库的,但我目前并不打算离开MySQL

我是否以正确的方式处理了这个问题?

嗯,部分是这样

第一点描述了一个模型——MVC中的M。从这个模型中抽象出“业务逻辑”在很多方面都是有意义的。一个用例可以是与RESTAPI相同的数据交互的网站。您可以重用模型,只需要构建新的控制器

“业务逻辑”/“层”可能是MVC中的控制器——C。但是,我不会给工厂对象DB连接的所有权,因为有些用例可能希望使用多个工厂对象,但应该使用相同的数据库连接


我建议您阅读更多有关MVC方法的结构以及优缺点的信息。

当您从头开始时,最好是:

  • 有一个ORM(这意味着你的MySQL数据库中必须有外键等的关系)。这是在程序中管理数据库管理的非常快速的方法
  • 为每个entitiy=1类创建自制类
最好的实践通常是有一个ORM,但它可能有点重(这取决于您的体系结构和应用程序)。 在你的情况下,放一个ORM似乎太多了,因为你开发了很多。 这取决于应用程序的未来:它会再次增长吗?会有很多开发人员在上面开发吗

对于小型/中型,您可以轻松地按大主题重构一点您的类,例如:1个类用于您的3个最大实体,其中您有更多的请求。这将整理一点混乱并组织事情,然后您可以为eqch新实体迁移新类。对于旧的,您可以逐步迁移,也可以不迁移

另一个好的实践是使用getter和setter
$this->getter_id()
$this->setter\u id($in\u nId)