如何设置抽象层和模块

时间:2012-06-10 19:02:21

标签: php model-view-controller frameworks

我遇到了一个问题,我无法理解。我在php中使用自己的Web应用程序框架。我知道那里有很多好东西,但我喜欢玩这个,我不会用它来做任何敏感的制作。

所以这就是问题所在:我有一个抽象基类,其中包含一些我希望所有模型都可以继承的函数。还有一个抽象的基本控制器,它扩展了基本模型,具有基本的manupulation功能。 目前,所有创建的模型都扩展了基本模型,所有控制器都扩展了基本控制器。因此,所有控制器也通过Base控制器继承Base模型。 但是现在我无法从模型控制器访问模型属性,因为模型扩展了Base控制器,模型扩展Base控制器似乎很奇怪。

我应该如何设置它以便我可以从各自的控制器访问模型属性?

谢谢!

1 个答案:

答案 0 :(得分:2)

  • 首先,在我看来,你对什么是模型的理解......好......很糟糕。也许this comment会有所帮助。

  • 另一件事,整个画面看起来是错的:

      

    因此,所有控制器也通过Base控制器继承Base模型。

    你应该避免深度继承。而且由于控制器你的呼叫模型具有完全不同的职责,因此两者都不应该继承。您必须了解extendsis-a的同义词。

    如果你写class Admin extends User,那就意味着每个管理员都是用户。这也意味着,当你写class User extends Table时,它是错误的(......有点侮辱)。

  • 控制器不应该从 what-you-call-model 中读取属性(假设您不是implementing MVP模式)。该部分应该由 View 完成,因为那将是负责表示逻辑的部分。

    为此你你叫什么模特应该有特定的吸气剂。你不应该直接暴露属性(例如,设置它们public),因为那样你就会破坏封装。

..我的3美分