实现我的第一个PHP模型

时间:2015-03-28 16:07:40

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

我使用与MySQL数据库连接的Slim框架(http://www.slimframework.com/)编写了一个小的RESTful PHP后端,现在我只有一个类进行所有数据库交互,它变得有点大。因此,现在是时候更清洁地组织它了。

基于我对MVC的理解,更好的方法是实现这样的模型层:

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

但这似乎花费了很多重构时间来做同样的事情。为什么我不想只使用从数据库加载的普通数组数据?当然,它并不是独立于数据库的,但我现在还没有真正计划从MySQL转移。

我是否以正确的方式接近这个?

2 个答案:

答案 0 :(得分:0)

嗯,部分。

第一点描述了一个模型--MVC中的M.提取您的业务逻辑"从这个模型中有很多意义。一个用例可以是与REST API交互相同数据的网站。您可以重用该模型,只需要构建新的控制器。

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

我建议你阅读更多关于MVC方法的结构和专业知识的内容。

答案 1 :(得分:-1)

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

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

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

对于小/中等大小,您可以轻松地通过大主题重构您的课程,例如:1个课程,用于您拥有更多请求的3个最大实体。这将整理混乱并组织一些事情,然后你可以为eqch新实体迁移你的新类。对于旧版本,您可以逐步迁移

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