Home >Backend Development >PHP Tutorial >这个为什么打印出来的是33而不是11呢?

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

WBOY
WBOYOriginal
2016-06-06 20:17:311304browse

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

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

?></code>

回复内容:

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

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

?></code>

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

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

构造函数优先运行

先初始化的变量,

然后再执行的构造函数。

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

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

?>

结果: 1133

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

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn