我遇到了一个问题,我无法理解。我在php中使用自己的Web应用程序框架。我知道那里有很多好东西,但我喜欢玩这个,我不会用它来做任何敏感的制作。
所以这就是问题所在:我有一个抽象基类,其中包含一些我希望所有模型都可以继承的函数。还有一个抽象的基本控制器,它扩展了基本模型,具有基本的manupulation功能。 目前,所有创建的模型都扩展了基本模型,所有控制器都扩展了基本控制器。因此,所有控制器也通过Base控制器继承Base模型。 但是现在我无法从模型控制器访问模型属性,因为模型扩展了Base控制器,模型扩展Base控制器似乎很奇怪。
我应该如何设置它以便我可以从各自的控制器访问模型属性?
谢谢!
答案 0 :(得分:2)
首先,在我看来,你对什么是模型的理解......好......很糟糕。也许this comment会有所帮助。
另一件事,整个画面看起来是错的:
因此,所有控制器也通过Base控制器继承Base模型。
你应该避免深度继承。而且由于控制器和你的呼叫模型具有完全不同的职责,因此两者都不应该继承。您必须了解extends
是is-a
的同义词。
如果你写class Admin extends User
,那就意味着每个管理员都是用户。这也意味着,当你写class User extends Table
时,它是错误的(......有点侮辱)。
控制器不应该从 what-you-call-model 中读取属性(假设您不是implementing MVP模式)。该部分应该由 View 完成,因为那将是负责表示逻辑的部分。
为此你你叫什么模特应该有特定的吸气剂。你不应该直接暴露属性(例如,设置它们public
),因为那样你就会破坏封装。
..我的3美分