PHP对象覆盖问题

时间:2010-06-25 10:04:12

标签: php class oop

这是我的问题:

$Me[1] = new User(1);
$Me[2] = new User(2);
$Me[3] = new User(19);
$Me[4] = new User(75);
$Me[5] = new User(100);
foreach ($Me as $k) echo $k->getId();

我正在尝试使用不同的ID创建5个用户。问题是,ID为2的用户'覆盖'ID为1的用户,ID为3的用户'覆盖'具有ID 2的用户,具有ID 4的用户'覆盖'具有ID 3的用户,具有ID的用户5'覆盖'ID为4的用户。

我真的不知道如何解决这个问题,有人可以帮助我吗?

提前感谢您的帮助!


我无法从父类获取$ id。似乎最后一个类初始化了“覆盖”所有值(也许因为我宣布它是静态的?但我怎么能得到它?)..

这是我的班级:

class User {
    public static $id;

    public function __construct($id) {
        $this->id = $id;
    }

    public function getId() {
        return $this->id;
    }
}

class Sub extends User {
    public function __construct($id) {
    }

    public function printUserLink(){
            echo '<a href="userprofile.php?userid='.parent::getId().'">Go to user profile</a>';
    }
}

如何在“Sub”类中获取ID?

1 个答案:

答案 0 :(得分:1)

问题可能在于您的User类。这个简单的例子按预期工作:

class User {
    private $id;

    public function __construct($id) {
        $this->id = $id;
    }

    public function getId() {
        return $this->id;
    }
}

$Me[1] = new User(1);
$Me[2] = new User(2);
$Me[3] = new User(19);
$Me[4] = new User(75);
$Me[5] = new User(100);

foreach ($Me as $k) echo $k->getId() . "\n";

输出:

1
2
19
75
100

如果没有User类的详细信息(由ircmaxell建议),解决问题将会非常棘手。