我正在为提供一些基类的 CMS 创建一个插件(假设其中一个类被称为Base
)。这个类有一些必须在扩展类中覆盖的辅助方法。我们应该注意,基本方法提供了默认参数/值。在 LMS 的一个版本中,这些值在下一版本中仅按值通过引用提供。
例如(CMS v1.0):
function prepareTable(&$table){...
内容管理系统 v1.1:
function prepareTable($table){...
当您扩展Base
类并覆盖prepareTable
方法时,您还必须使用相同的默认参数/值声明它,否则会显示 STRICT PHP 警告(在 PHP 5.4 中默认为开启)。
我的问题是,我如何在知道父 CMS 的版本的情况下,以一种有效的方式有条件地覆盖父类中的方法?
这是我目前拥有的(目前不工作):
class Base{
function prepareTable(&$table){
}
}
class Extending extends Base{
if(CMS_VERSION=='1.0')
function prepareTable(&$table){
else
function prepareTable($table){
echo $table;
}
}
显然,我不能Base
直接编辑及其方法。
编辑:这是确切的错误消息:
Strict standards: Declaration of Extending::prepareTable() should be compatible with Base::prepareTable($table) in.