我熟悉OOP和PHP,但我对MVC框架很陌生。我目前正在使用Laravel,到目前为止我发现它很棒,但是随着我的进步,事情变得越来越棘手,现在我意识到我需要重新思考我的架构。
该项目是一个小型客户的数字资产管理,但我仍然希望确保我正在开发它,我可以,尽管它的大小。
基本的对象关系是:
看起来很简单,对吧?
我的项目运行良好,使用了REST,但我不知道如何处理这些部分和资产。
有6种类型的部分,项目可以有其中之一:例如。照片,外部链接,关于,视频等。
其中一些部分包含一个或多个资产。例如,“关于”部分只能包含一个文本体,但是“照片”部分可以包含许多照片。每种类型的资产都有一组不同的属性。
的想法
如果我用普通PHP编写这篇文章,我可能会有一个Asset对象,然后有照片,关于,外部链接,那个扩展的资产。
我想的越多,我就越怀疑我是否也需要一个节对象。
考虑到我使用的是MVC,我不确定是否应该为每种资产类型设置不同的控制器和模型,或者这是否过分。也许我应该有一个资产模型(和一个资产控制器),然后为每个扩展该模型的资产类型建立更多的模型。
任何帮助,以帮助我的想法,以便更好地使用MVC将不胜感激。
有了更多的时间思考,学习了更多关于MVC的知识,并考虑了@RobertHarvey的评论,我开始更多地思考我选择的模型。我开始认为这就是这个问题(和它的解决方案)的真正所在。
我已经开始建立一个模型为每一节类型和资产类型(例如。VideoSection和VideoAsset是我现在的两种型号。
一个项目可以有一个VideoSection。一个VideoSection可以有许多VideoAssets。祈祷这是个很好的方法。
发布于 2017-06-15 02:48:52
这是非常主观和抽象的,但下面的方法帮助我在过去。
当我遇到这样的设计挑战时,我使用的是MVC风格的设计模式。我发现专注于三个关于应用程序将如何处理状态的问题是有帮助的。对我来说,根据我的数据状态来处理行为的决定,在大多数情况下都会自然而然地把事情安排好。
1)示范“事物”:
这东西有状态吗?如果是:考虑为这个“东西”创建一个或多个模型对象。
2)主计长“物品”:
我在乎这件事改变状态吗?如果是的话:考虑创建一个控制器来处理行为,以响应这个“事物”状态的变化。
3)看待“事物”:
我需要展示这东西的状态吗?如果是:考虑创建一个或多个视图来显示这个“事物”的当前状态。
显然,这是非常简单的,但这才是重点。
当您扩展应用程序的范围并改进您需要处理的行为时,您可以继续问同样的问题。
我还发现保持一些严格的边界以帮助保持松散耦合和单一目的也是有用的:
1)仅通过控制器操纵视图。
2)不要将模型对象与视图耦合。
3)不要将模型对象与控制器耦合,而是使用接口。
3) (数据读取)只更新服务层的模型数据。
4) (数据写入)如果必须从用户输入向模型写入数据并将其持久化,则必须确定一致的方法并坚持下去。
5)每件事都需要沟通,所以决定一种一致的方法并坚持下去。
正如我所说的,这都是相当主观的,而且只是对事物的一种看法。我不认为每个人都会同意我的观点,但希望这能帮助你做出一些决定。
https://softwareengineering.stackexchange.com/questions/350857
复制