$ this->给出错误但$ this-> a = 20;输出为什么?

时间:2017-10-14 13:20:04

标签: php

<?php
    class Test
    {
        private $a = 10;
        public $b ='abc';



}
class Test2 extends Test
{

    function __construct()
    {

         echo $this->a;
         echo $this->a = 20; // wh
    }

}
$test3 = new Test2();

2 个答案:

答案 0 :(得分:3)

echo $this->a;

回应类属性a的值。此属性未定义,因为类a的属性Test私有,因此在类Test2中不可用。因此,属性a是在类Test2中创建的。

echo $this->a = 20; // wh

执行下一步:将{20}分配给a属性(在上一行中创建)并回显赋值结果20

解决方案:

class Test
{
        // protected property is avalilable in child classes
        protected $a = 10;
        public $b ='abc';
}

class Test2 extends Test
{
    function __construct()
    {
         echo $this->a;
         $this->a = 20;
         echo $this->a;
    }
}
$test3 = new Test2();  // outputs 10 20

答案 1 :(得分:-1)

你应该改变

private $a = 10;

为:

protected $a = 10;