如下图所示,即为 在PHP严格检查下 出现的警告:
警告规则 (如):Strict standards: Declaration of xxxxxx should be compatible with yyyyyy
上图所示的意思是:在PHP 大于5.4的版本中,使用了 PHP的严格模式 检查程序,检测结果为 Index模块中的 clearcache()方法 必须兼容 父类Mytpl类中 定义的clearcache()方法,即 子类覆写父类的方法时 必须一致,包括 参数个数一致、参数如果没有值 则需要定义其默认值!
此为 父类Mytpl类中 定义的 clearCache()方法,有5个参数:
此为 子类Index类中 定义的 clearcache()方法,没有参数:
正如上述2幅图所示,子类在不小心的情况下 使用了 父类中定义的方法,但又没有按父类的方法 在子类中定义,所以 出现了 上述的警告!
总结:
在不知道 使用的父类(如外部的Smarty类)中 定义了 哪些方法的情况下,在其子类中 定义方法名时 需要避免 与父类中的方法名 重名,最好的方法是 检测 子类的方法名 是否在父类中 已经定义了!
如在子类的某个方法中 使用 以下2句 进行检测:
$res = method_exists( $this, "clearcache");
var_dump( "res=", $res );
如果 res 为true,说明 clearcache()方法 已经 在子类或其父类中 存在,此方法名 不能使用,需要 定义 新的方法名!
如果 想覆写 父类中的 clearcache()方法,则 需要 按照父类的格式 进行覆写,参数个数一致,参数名可以不同,参数不存在时 需要使用默认值 才能保证 覆写父类方法正确!