我得到了一些解决方案的集合,请帮我找到一个正确的。
->在默认构造函数中添加成员变量增量,在析构函数中添加减量。
->添加局部变量,该变量在每个构造函数中递增,在析构函数中递减。
->添加静态成员变量,这些变量在每个构造函数中递增,在析构函数中递减。
无法完成新建,因为对象的创建是通过“->”动态完成的。
这是我的四点,请选我最好的。
发布于 2010-12-23 23:40:13
使用静态成员变量:
class foo {
protected static $instances = 0;
public function __construct() {
self::$instances++;
}
public function __destruct() {
self::$instances--;
}
}但请记住,您可以在不使用构造函数的情况下创建新实例(即通过clone、__set_state() (由var_export使用)和unserialize )……因此,您需要添加:
public function __clone() {
self::$instances++;
}
public function __wakeup() {
self::$instances++;
}
public static function __set_state($data) {
$obj = new self();
foreach ($data as $key => $value) {
$obj->$key = $value;
}
return $value;
}https://stackoverflow.com/questions/4520105
复制相似问题