php 方法重写,参数不同,报错: Declaration of should be compatible with that

问题详细描述为:https://bugs.php.net/bug.php?id=46851

  1. <?php
  2. abstract class A {
  3. // 方法无参数
  4. public static function foo ( ) { echo 'bar' ; }
  5. }
  6.  
  7. abstract class B extends A {
  8. // 方法有参数
  9. public static function foo ( $str ) { echo $str ; }
  10. }
  11. ?>


如上面的代码:类A中的foo方法无参数,类B在继承A后重写foo方法时加入了参数,因此会产生一个类似下面E_STRICT级别的警告:

Strict standards: Declaration of ... should be compatible with that of ...


解决方法:

  1. <?php
  2. abstract class A {
  3. // 方法无参数
  4. public static function foo ( ) { echo 'bar' ; }
  5. }
  6.  
  7. abstract class B extends A {
  8. // 方法有参数
  9. public static function foo ( $str = NULL ) { echo $str ; }
  10. }
  11. ?>


类B在重写foo方法时为新加入的参数指定一个默认值即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值