Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从yii中的模块模型重写方法?_Php_Yii - Fatal编程技术网

Php 如何从yii中的模块模型重写方法?

Php 如何从yii中的模块模型重写方法?,php,yii,Php,Yii,我想在yii上的几个项目中使用第三方模块。 例如,模块注释 通常需要对特定项目的模块进行一些更改。 如果我需要使用costom视图,我只需将它们复制到主题中并进行修改。 如何从位于模块中的php类重写方法? 例如,我想修改模型类中的方法。我该怎么做 提前感谢如果您经常使用此评论模块repo,但它似乎不是您喜欢(或需要)的方式,那么请使用它 分叉回购协议,并按您喜欢的方式编辑代码。只有你知道你需要它如何工作。加入你自己的自定义函数,你自己的助手,完全分割现有函数,以你想要的方式工作 记住,在OOP

我想在yii上的几个项目中使用第三方模块。 例如,模块注释

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


提前感谢

如果您经常使用此评论模块repo,但它似乎不是您喜欢(或需要)的方式,那么请使用它

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

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

如果你有一个你每次都使用的函数,但是对于10个项目中的1个,你需要改变它,然后扩展它。可以扩展类并重写函数。因此,唯一会改变的是,您将添加一个扩展现有类的新类,并且只包含需要重写的少数函数

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

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

Class CommentsModule Extends CWebModule{}

我不理解你的问题,只是简单地在模块目录中找到模型文件,在应用程序模块目录中找到模型文件,覆盖你想要的方法,你可以给我一个代码示例,它允许我从这个模块模型扩展并覆盖一些方法。我应该把文件放在哪里,这将扩展该模型?@Mikola laviro如果你的模块已经加载到你的主应用程序上,你可以覆盖模型,例如,使用继承将你的自定义模型放在protected/components/mymodel.php上:class mymodel extensed ModuleModel{…}Alejandro,你说得对,我可以做到。但我如何告诉模块中的所有文件,它们应该使用mymodel而不是ModuleModel呢?例如,在mdule控件中,下一个代码是“new Modulemodel”。那么mymodel将不会被使用?@Mikola laviro在代码的其他部分,您应该使用“new mymodel”而不是“new ModuleModel”