PHP MVC结构(PHP MVC Structure)

2019-10-29 11:07发布

作为一个大学项目的一部分,我开发的PHP Web应用程序,并努力遵循MVC原则,尽可能地。 因为我想尽可能多的项目成为我尽可能工作,帮助获得更高的标志我不使用一种现成的,现成的框架。

要删除一个数据库,我去请执行下列操作过程中的项目(每个项目都有一个ID,状态,标题,PARENT_ID)....

  • 用户点击删除按钮,并要求确认
  • 点击确认时,其调用控制器“页”加载,启动存储在控制器对象模型
  • 在模型对象的方法被调用来基于在URL中的ID从数据库中加载的项目
  • 我在模型编辑状态属性项目标记为删除
  • 我那么模型保存到这实际上删除它的数据库。

我也想删除刚刚删除的项目的数据库中的所有子项。 哪里是做到这一点的最佳地点? 在控制器? 在一个单独的功能文件? 在模型文件?

我是很新,整个MVC的想法,所以任何帮助/建议是非常赞赏。

Answer 1:

MVC的基本击穿

  • 型号:业务逻辑
  • 查看:表示逻辑
  • 控制器:胶合逻辑(触发模型功能基于用户输入,呈现基于模型输出视图)。

声明“删除一个项目将导致其所有的孩子也被删除”是的东西,需要在业务逻辑发生的说明。 因此,它属于模型。

执行是由你如何实现让子项,并在模型中删除项目,但它通常将包括让你的模型的孩子集合在它的删除方法,并调用每个孩子的删除方法集合中的(每个孩子还将寻找孩子,并删除它们时发生这种情况)。 现在,视图和控制器不必担心模型是否有孩子,因为这一切都在模型中的业务逻辑的照顾。



Answer 2:

成为一名优秀的开发人员一部分是知道何时重新发明轮子。 这当然是其中的一种情况。 我建议你先问问你的教授(或多个)是否允许使用一种现成的,现成的框架或没有。 这种“我想尽可能多的项目是我的工作”是相当多的废话。 如果你真的希望它是你自己的工作,做汇编:)。

如果你还是得写一切从头开始(在PHP),我建议你先看看成熟的MVC框架(如Symfony的 ),为了得到这样的框架应该如何工作的感觉。 也许有一个看看源代码 ,太。



Answer 3:

我可能会做的PHP MVC模式之外。 使用MySQL InnoDB表可以实现,使用外键 :

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
                    INDEX par_ind (parent_id),
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
                      ON DELETE CASCADE
) ENGINE=INNODB;


文章来源: PHP MVC Structure