Php MVC在yii1中的实现

Php MVC在yii1中的实现,php,model-view-controller,yii,Php,Model View Controller,Yii,我目前正在寻找重新设计我的web应用程序上的一个功能。 web应用程序将Yii(版本1)用于后端 在这个例子中,我有一个模型和控制器。该模型用于存储所有userTracking数据,是一个适当的userTracking模型,但该模型的实际逻辑位于名为UserController的控制器中。我有一个名为actionTrackUser($id)的函数,用于为特定用户实现各种跟踪逻辑,并为该用户创建一个模型 然而,我现在需要将这个功能从UserController扩展到一个单独的trackingCon

我目前正在寻找重新设计我的web应用程序上的一个功能。 web应用程序将Yii(版本1)用于后端

在这个例子中,我有一个模型和控制器。该模型用于存储所有userTracking数据,是一个适当的userTracking模型,但该模型的实际逻辑位于名为UserController的控制器中。我有一个名为actionTrackUser($id)的函数,用于为特定用户实现各种跟踪逻辑,并为该用户创建一个模型

然而,我现在需要将这个功能从UserController扩展到一个单独的trackingController,它将实现各种型号的跟踪

我需要能够利用这个功能,但在新的控制器和旧的控制器。我想知道YII1中正确实现MVC的最佳方法是什么。我曾考虑过制作一个跟踪模型,并让userTracking模型扩展它,但是我会在一个模型中有很多业务逻辑,以便在两个地方使用它

我是MVC和Yii的新手,所以我想知道在这里最好的方法是什么

我有意将代码排除在这个问题之外,因为这更像是一个关于在Yii中实现此类功能的理论问题

感谢您的帮助


谢谢

我不确定是否有“最佳”方法。但是,您需要选择一种最适合您的方法。请遵循什么对您的情况有效,以及什么将使您和其他人在未来能够管理代码

您当前的用户跟踪模型和控制器没有问题。您声明“模型的实际逻辑在控制器中”。您可能希望重新查看该声明,以便至少将适当的数据管理、约束和验证规则移动到模型中

您可以将函数移动到单独的trackingController,并且仍然使用userTracking模型。没有规则规定必须有一个匹配的模型和控制器集,控制器一次管理多个模型是完全可能的


我通常从activeRecord模型开始,它映射到数据存储(大多数情况下是数据库表)。我使用相应的表单模型来反映与activeRecord模型明显不同的表单,我使用域模型来反映功能丰富的复杂业务对象,并反映大量的运行时属性(如计算字段)和状态数据(如发布状态,它是从其他字段计算出来的-例如,用户可以具有验证状态、付费状态、活动状态、帐户级别等,所有这些都可以共同指示用户可以进行哪些活动)。

您不能执行“MVC”仅在PHP中。忘记这个术语,然后基于编写可测试、解耦的代码。谢谢。但是在这个例子中,我无法重写原始代码,因为它有点像一个黑盒子,是由另一个开发人员开发的。我可以将控制器代码提取到模型中,但是它仍然需要在两个地方调用,我觉得使用实现这一点的模型是不正确的方法,但是我想不出其他解决方案。谢谢@PeeHaaWell,如前所述,您的问题无法回答,因为代码与MVC无关,也永远不会有任何关系。