PHP 一个有意思的报错

下面的一个测试脚本中,B类中在调用A的public方法m时写错了,当做静态的方法来用了,于是A->m()中的$this被解释成了B了。

$this 究竟是谁?  test.php
  1.     
    <?php

        

  2.     
    error_reporting(2047);

        

  3.     
    class A{

        

  4.     
        private $v = 8;

        

  5.     
        public function m() {

        

  6.     
            echo $this->v;

        

  7.     
        }

        

  8.     
    }

        

  9.     
    class B{

        

  10.     
        public function __construct() {

        

  11.     
            A::m();

        

  12.     
        }

        

  13.     
    }

        

  14.     
     

        

  15.     
    new B();

        

  16.     
     

        

  17.     
    exit;

        

出错信息:
PHP Notice:  Undefined property:  B::$v in test.php on line 6

无语…

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据