【问题标题】:implementing my first PHP model实现我的第一个 PHP 模型
【发布时间】:2015-06-01 21:11:12
【问题描述】:

我使用与 MySQL 数据库接口的 Slim 框架 (http://www.slimframework.com/) 编写了一个小型 RESTful PHP 后端,现在我只有一个类来处理所有数据库交互,而且它变得有点大。所以是时候把它组织得更干净一点了。

所以根据我对 MVC 的理解,更好的方法可能是实现这样的模型层:

  • 系统中的每个逻辑实体都将使用一个数据类来实现。 IE。用户帐户:一个名为“Account”的类,带有 getId()、getName()、getEmail() 等
  • 和相应的工厂对象,即拥有 DB 连接并创建 Account 类以在业务逻辑层的其他位置进行操作的 AccountFactory。
  • 业务逻辑层仍然很简单,可能是一个名为 MyApplication 的类,它实例化工厂并使用它们来响应 RESTful API 调用。
  • 例如,业务逻辑可能是根据地理位置将两个帐户匹配在一起。因此,在这种情况下,我将只测试两个单独 Account 对象中的数据,而不是从数据库加载的原始数据。

但这似乎花费了大量重构时间来完成基本相同的事情。为什么我不想只使用从数据库加载的纯数组数据?当然,它不是独立于数据库的,但我目前并不打算离开 MySQL。

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

【问题讨论】:

    标签: php mysql model-view-controller architecture model


    【解决方案1】:

    好吧,部分。

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

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

    我建议您详细了解 MVC 方法的结构以及优缺点。

    【讨论】:

      【解决方案2】:

      当你从头开始时,最好的方法是:

      • 有一个 ORM(这意味着您的 MySQL 数据库中必须有与外键等的关系)。这是在您的程序中管理数据库管理的非常快速的方法。
      • 为每个实体创建您的自制班级 = 1 个班级。

      最好的做法通常是拥有一个 ORM,但它可能有点重(这取决于您的架构和应用程序)。 在您的情况下,放置一个 ORM 似乎太多了,因为您开发了很多。 这取决于您的应用程序的未来:它会再次增长吗?会有很多开发者在上面开发吗?

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

      另一个好的做法是让 getter 和 setter $this->getter_id(); $this->setter_id( $in_nId ); 如果您需要更改一些 db 字段,这将对您有很大帮助

      【讨论】:

        猜你喜欢
        • 2020-07-17
        • 1970-01-01
        • 2016-03-05
        • 1970-01-01
        • 2012-03-23
        • 2021-10-01
        • 2020-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多