扩展类或接口或抽象-MVC的PHP子类ref:Vtiger
我在Vtiger(MVC设置)中工作,模块包含MVC文件。模块通过扩展其他模块的类来扩展其他模块。在本例中,报价扩展了库存模块。结果是报价中有一个自定义块,而不是一个全新的“页面” 我想要那个“积木”,它实际上是一个完整的模块。所以这应该很简单,只是我遇到了PHP的“继承”问题。我需要扩展的类已经是扩展类了 我的逻辑是:(B得到C)有效!现在A得到了B。这不起作用 父类事件扩展了日历(显示事件详细信息/“最终页面”) 正在退出的“工作”类事件扩展库存(创建新块) 我需要这两个类来通信,因为Calendar已经与事件“对话”,而事件与Inventory对话,变量是不相关的,但我无法使输出工作,我假设是因为类“继承” 所以直接的问题是:可以扩展现有的子类吗扩展类或接口或抽象-MVC的PHP子类ref:Vtiger,php,oop,inheritance,vtiger,Php,Oop,Inheritance,Vtiger,我在Vtiger(MVC设置)中工作,模块包含MVC文件。模块通过扩展其他模块的类来扩展其他模块。在本例中,报价扩展了库存模块。结果是报价中有一个自定义块,而不是一个全新的“页面” 我想要那个“积木”,它实际上是一个完整的模块。所以这应该很简单,只是我遇到了PHP的“继承”问题。我需要扩展的类已经是扩展类了 我的逻辑是:(B得到C)有效!现在A得到了B。这不起作用 父类事件扩展了日历(显示事件详细信息/“最终页面”) 正在退出的“工作”类事件扩展库存(创建新块) 我需要这两个类来通信,因为Cal
- Stack在几篇文章中提到了这一点,但我无法“理解”这一点在这里的应用,因为没有共享变量,不应该有任何错误的obj调用李>
我试图解释我提到的问题,因为它可能与php无关,而是我的理解。提前感谢。扩展类实际上会创建一个新类,该类可以访问父类的相同方法和属性。它是获取新方法/属性的子类,而不是父类。它不会修改父类来添加这些方法。因此,如果您有
类A
和两个扩展A的类,就像类B扩展A
和类C扩展A
(这就是您正在做的),那么类B
和C
只共享A
中定义的方法,而不是彼此共享。您可以更改类C
以扩展B
,并且它可以访问两个父类。很好的例子,谢谢。但我认为情况恰恰相反。。A和B已被使用。B和C是新的一对。如果我理解您的解释(可以访问父类的相同方法和属性)。。。我可以简单地从A到C,然后当A调用B时(就像通常那样)。。。B将通过A访问C??我的:[A+(B]+C)…不起作用([A+B]+[A+C])会起作用吗?我无法更改A+B的属性。。我只能将C作为附加组件连接。抱歉,如果我把一件简单的事情复杂化了。你可以创建一个新类(C)并让它扩展(B)。然后A和B将有权访问C。如果您在C中重新定义(覆盖)A或B中存在的方法,当A或B引用$this
时,它将是C类。例如:现在在A中定义了一个C覆盖的方法,在A中定义的另一个方法使用$this
访问以前覆盖的方法。这当然取决于A和B如何尝试访问在其父级和子级中定义的方法(使用$This而不是特别使用parent::method
或child::method
)。我理解,谢谢。对我来说,问题在于现有的代码,因为我用C扩展了B。我将不得不寻找冲突。谢谢你的澄清!请回答你的第一个评论,我将标记为正确答案,因为它解释了类顺序之间的属性关系。