Php 为什么我的构造函数工作不正常?

Php 为什么我的构造函数工作不正常?,php,Php,以下是代码示例: class Empolyee{ static public $nextID = 1; public $ID; public function __construct(){ $this->ID = self::$nextID++; } public function NextID(){ return self::$nextID; } } $bob = new Employee; $jan =

以下是代码示例:

class Empolyee{
    static public $nextID = 1;
    public $ID;
    public function __construct(){
        $this->ID = self::$nextID++;
    }
    public function NextID(){
        return self::$nextID;
    }
}

$bob = new Employee;
$jan = new Employee;
$simon = new Employee;

print $bob->ID . "\n";
print $jan->ID . "\n";
print $simon->ID . "\n";
print Employee::$nextID . "\n";
print Eployee::NextID() . "\n";
上面的代码返回
1,2,3,4,4
,但对于这一点,我误解它应该返回
2,3,4,5,5
,因为在类Employee中,
$nextID
的值是1,然后在创建新对象时,构造函数会自动启动,就好像值增加了一样1。因此,当创建第一个对象时,
$bob
,这里它应该返回1+1=2。请把我的想法讲清楚。谢谢

$this->ID = self::$nextID++; is POST INCREMENT
将$bob的$ID设置为1,然后将$nextID增加为2(增量在(POST)分配完成后-即,其与以下相同:

$this->ID = self::$nextID;
self::$nextID = self::$nextID + 1
这个循环重复@jan和$simon

如果要在分配之前增加ID,请使用预增量

$this->ID = ++self::$nextID; 
将$bob的$ID设置为1,然后将$nextID增加为2(增量在(POST)分配完成后-即,其与以下相同:

$this->ID = self::$nextID;
self::$nextID = self::$nextID + 1
这个循环重复@jan和$simon

如果要在分配之前增加ID,请使用预增量

$this->ID = ++self::$nextID; 
参考:

因此,在您的情况下,在按1添加之前,它始终返回当前$nextID。

ref:


因此,在您的情况下,在添加1之前,它总是返回当前的$nextID。

+1,您的答案是正确的,但是,出于对web的热爱以及世界上所有美好事物的考虑,我从开发人员的灵魂深处恳求您,不要将任何人转介到w3schools。请参阅。同意@Alex。更新官方文档的引用+1,你的答案是正确的,但是,为了对网络的热爱和世界上一切美好的事物,我从开发者的灵魂深处恳求你,不要将任何人推荐给w3schools。请参阅。同意@Alex。更新官方文档的引用