2017-06-18 12:11:42 2183次浏览 3条回答 0 悬赏 10 金钱

我在做RBAC功能的时候发现YII自带的不能满足我需要的功能;

于是我就自己写一个类集成YII的RBAC类

class DbManager extends \yii\rbac\DbManager{}

然后开重写他原有的方法比如:

protected function getDirectPermissionsByUser($userId)

他默认是一个参数

我则改写成了三个参数

protected function getDirectPermissionsByUser($userId, $where, $arr)

加了两个参数结果就报错了

PHP Strict Warning – yii\base\ErrorException
Declaration of app\components\rbac\DbManager::getDirectPermissionsByUser() should be compatible with yii\rbac\DbManager::getDirectPermissionsByUser($userId)

如果不加后两个参数($where, $arr)就不报错,请问是那里的问题呢,

是不是只能原方法就几参数 重写也就只能传几个参数呢?

补充于 2017-06-18 12:17

protected 这个类型的方法必须指定默认值吗?

我给 $where $arr 加了一个默认值就不报错了!

  • 回答于 2017-06-18 23:21 举报

    重写是不可以改变参数个数的,如果参数个数不一致的话,只能另外写一个方法了

  • 回答于 2017-06-19 09:22 举报

    楼主C++,C#,JAVA……这类语言用多了?

  • 回答于 2017-06-19 10:24 举报

    这个方法重写但是参数按照正常,然后自己再写一个处理逻辑function 在这里调用

您需要登录后才可以回答。登录 | 立即注册
xjcallen
见习主管

xjcallen 东莞

注册时间:2017-01-10
最后登录:2022-06-30
在线时长:6小时36分
  • 粉丝0
  • 金钱175
  • 威望0
  • 积分235

热门问题