是否可以创建一个在使用 X 次时取消设置变量的函数?
我知道unset()
它是如何工作的。为了安全起见,这将很方便。
例如,要自动取消设置我从 MySQL 数据库中获取的个人信息,unset()
代码中有 1000-2000 看起来很乱!
尽管您的问题并不完全合理,但可以这样做:
class ExpiredValue {
private $data;
private $access_counter;
private $max_access;
public function __construct($data, $max_access) {
$this->max_access = $max_access;
$this->__invoke($data);
}
public function __invoke($data = null) {
if(func_num_args() == 0) {
$this->access_counter++;
if($this->access_counter > $this->max_access) {
$this->data = null; // remove data from memory
}
return $this->data;
} else if(func_num_args() == 1) {
$this->access_counter = 0;
$this->data = $data;
}
}
}
如何使用:
$value = new ExpiredValue("<data>", 3);
echo $value(); // "<data>"
$value("<other data>");
echo $value(); // "<other data>"
echo $value(); // "<other data>"
echo $value(); // "<other data>"
echo $value(); // null
大多数情况下,如果你开始考虑这样的事情,你就走错了路。有时退一步找出真正的问题是有帮助的。您的问题并不是真的不可能使您的变量过期。