php7中构造方法,PHP7的构造方法继承问题

一直以来记得:子类覆写父类的方法时,子类方法的访问控制不能比父类的更严格。但是经测试,php7中的构造方法__construct竟然不受此限制,测试代码如下:

class P

{

public function __construct()

{

echo "parent\n";

}

}

class S extends P

{

private function __construct()

{

parent::__construct();

echo "Son\n";

}

private static $_instance = null;

/**

* 获取单例实例

* @return GameVideoService|null

*/

public static function getInstance()

{

if (!(self::$_instance && (self::$_instance instanceof self))) {

self::$_instance = new self();

}

return self::$_instance;

}

}

S::getInstance();

以上代码在PHP5.6版本报错执行不了,但是在PHP7版本中可以正常执行。截图如下:

64bded430bc325ba38529ddeeccd16e8.png

PHP5.6版本会报错,信息如下:

PHP Fatal error: Access level to S::__construct() must be public (as in class P)

但是PHP7是可以正常执行的,如下:

f5e4e3d600bd2fccb4a122737f4c41d1.png

在PHP7的新特性中并没有看到相关的说明,难道是PHP7的bug?请大神指点,多谢多谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值