继承静态方法时报了一个错:
Declaration of app\library\i18n\oauthI18n::t() should be compatible with app\library\i18n\i18ns::t($message, $category)
意思是声明的方法要与重写的方法兼容
但很明显这两个方法是兼容的:
public static function t($message) { return parent::t($message,'oauth'); } public static function t($message,$category) { return \Yii::t($category, $message); }
但为什么PHP会报错呢? 因为在PHP 大于5.4的版本中,使用了 PHP的严格模式 检查程序,检测结果为 Index模块中的 clearcache()方法 必须兼容 父类Mytpl类中 定义的clearcache()方法,即 子类覆写父类的方法时 必须一致,包括 参数个数一致、参数如果没有值 则需要定义其默认值!
所以想要让PHP认可,这两个方法的参数数量也必须一致!
改为:
public static function t($message,$category = 'oauth') { return parent::t($message,$category); }
问题解决