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

时间:2014-10-10 19:47:03

标签: php yii

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

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

提前致谢

1 个答案:

答案 0 :(得分:0)

如果你使用这个评论模块repo很多,但似乎它不是你喜欢(或需要)它的方式,那么叉吧!

分叉回购,并按照您喜欢的方式编辑代码。只有你知道你需要它如何工作。添加您自己的自定义函数,您自己的帮助程序,完全切断现有函数以按您希望的方式工作。

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

如果你有一个每次使用的功能,但是对于10个项目中的1个你需要更改它,然后扩展它。您可以扩展您的班级并覆盖该功能。因此,唯一可以改变的是,你会添加一个扩展现有类的新类,并且只需要覆盖那些少数函数。

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

例如,请查看您的CommentsModule。他们扩展了CWebModule。 CommentModule具有CWebModule具有的所有函数和变量,但可以包含更多函数/变量,或者覆盖CWebModule中定义的函数/变量。它基本上劫持了它。

Class CommentsModule Extends CWebModule{}