sur*_*rkk 1 php tags static constructor class
我得到一些解决方案,请帮我找到正确的解决方案.
- >在默认构造函数中添加成员变量增量,在析构函数中减少.
- >添加在每个构造函数中递增的局部变量,并在析构函数中递减.
- >添加静态成员变量,该变量在每个构造函数中递增并在析构函数中递减.
- >无法完成,因为对象的创建是通过"new"动态完成的.
这些是我的四点请选择我最好的.
使用静态成员变量:
class foo {
protected static $instances = 0;
public function __construct() {
self::$instances++;
}
public function __destruct() {
self::$instances--;
}
}
Run Code Online (Sandbox Code Playgroud)
但请记住,您可以创建新实例而无需点击构造函数(即via 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;
}
Run Code Online (Sandbox Code Playgroud)