search

Home  >  Q&A  >  body text

php - 这个为什么打印出来的是33而不是11呢?

如果把构造函数去掉就打印11 不去掉就打印33 这是为什么呢? public $name='11';这句话就不执行了吗?

<?php
 class man{
   public $name='11';
   public function __construct(){
      $this->name=33;
   }
 }
$a=new man();
echo $a->name;

?>
PHPzPHPz2902 days ago215

reply all(6)I'll reply

  • 伊谢尔伦

    伊谢尔伦2017-04-10 16:53:23

    应该是先执行变量的声明或者初始化,构造函数再赋值。

    reply
    0
  • 迷茫

    迷茫2017-04-10 16:53:23

    这个不是最基本的语法么?

    构造函数优先运行

    reply
    0
  • 迷茫

    迷茫2017-04-10 16:53:23

    先初始化的变量,

    然后再执行的构造函数。

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:53:23

    构造函数中更改了初始化时$name的值
    <?php

    class man{
        public $name='11';
        public function __construct(){
            echo $this->name;
            $this->name=33;
        }
    }
    $a=new man();
    echo $a->name;

    ?>

    结果: 1133

    reply
    0
  • 黄舟

    黄舟2017-04-10 16:53:23

    1、当你new man()的时候,构造方法就被执行了,所以里面的$this->name属性值会被改变

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 16:53:23

    man类有个构造函数,每次new一个对象的时候,该构造函数都会执行,执行之后$name的值就变成了33

    reply
    0
  • Cancelreply