如何覆盖yii中模块模型中的方法


How to override method from model of module in yii?

我想在yii上的几个项目中使用第三方模块。例如模块注释https://github.com/segoddnja/Comments-module

通常需要对特定项目的模块进行一些更改。如果我需要使用costom视图,我只需要将它们复制到主题中并进行修改。如何覆盖位于模块中的php类中的方法?例如,我想修改模型类中的方法。我该怎么做?

提前感谢

如果你经常使用这个注释模块repo,但它似乎不是你喜欢(或需要)的方式,那就分叉吧!

分叉repo,按照你喜欢的方式编辑代码。只有你知道你需要它如何工作。加入你自己的自定义函数,你自己的助手,完全分解现有的函数,以你想要的方式工作。

记住,使用OOP,您的重点是重用能力。创建可用于未来项目的类和函数。

如果你每次都使用一个函数,但对于十分之一的项目,你需要更改它,然后扩展它。你可以扩展你的类并覆盖该函数。因此,唯一会改变的是,您将添加一个新的类,该类扩展了现有的类,并且只有您需要覆盖的几个函数。

为了扩展它,你只需要在组件中创建一个新文件,就像有人说的那样。除非您提升了主配置,否则components目录中的所有文件都会自动加载。只需确保文件的名称与类的名称相同!

例如,只需查看您的CommentsModule。它们扩展了CWebModule。CommentsModule具有CWebModule所具有的所有函数和变量,但可以具有更多的函数/变量,也可以覆盖CWebModule中定义的函数和变量。它实际上劫持了它。

Class CommentsModule Extends CWebModule{}