【开发指南】X3.5插件适配之LSP(Liskov 替代原则)
2021-04-13 18:16 来自 admin 发布@ Discuz! X3.5专区
x3.5新增了插件的审核要求:
自带表类必须兼容 LSP ( Liskov 替代原则 )。如果依赖于主线表,不允许依赖 table 表的兼容性命名。兼容多版本需要自行判定并调用不同名称的方法,或开启不同分支版本维护
很多开发者反应看不懂这句,或者不知道应该如何适配,这里给大家提供一个较为简单的解释和适配方法的指导。
什么是Liskov替代原则:
这里就不用那些术语来解释了,简单的说就是,你所实现的类继承的“基类”能做到的事情,放到你所实现的类里面也必须可以做到。
对插件来说,此处主要指的是你的 source/plugin/你的插件/table/table_xxxxxx.php 这些文件。他们都是在extends discuz_table。
举个例子:
discuz_table里有这样一个方法:
public function insert($data, $return_insert_id = false, $replace = false, $silent = false)
那么你所extends的类里如果也定义了一个 insert ,那么首先,上面的代码里所接收的参数,你的实现里
自带表类必须兼容 LSP ( Liskov 替代原则 )。如果依赖于主线表,不允许依赖 table 表的兼容性命名。兼容多版本需要自行判定并调用不同名称的方法,或开启不同分支版本维护
很多开发者反应看不懂这句,或者不知道应该如何适配,这里给大家提供一个较为简单的解释和适配方法的指导。
什么是Liskov替代原则:
这里就不用那些术语来解释了,简单的说就是,你所实现的类继承的“基类”能做到的事情,放到你所实现的类里面也必须可以做到。
对插件来说,此处主要指的是你的 source/plugin/你的插件/table/table_xxxxxx.php 这些文件。他们都是在extends discuz_table。
举个例子:
discuz_table里有这样一个方法:
public function insert($data, $return_insert_id = false, $replace = false, $silent = false)
那么你所extends的类里如果也定义了一个 insert ,那么首先,上面的代码里所接收的参数,你的实现里
dz 程序文件无法用插件修改吗 New
2024-05-19 13:27 来自 婷姐 发布@ Discuz!问题求助
比如程序里某个文件的某行插入或添加其他代码,这种无法用插件吗,我看很多插件都是用在前端嵌入点。我知道答案 回答被采纳将会获得1 贡献 已有0人回答
12



