当使用X时间时,是否可以创建一个取消变量的函数?
我知道unset()
及其运作方式。
出于安全考虑,这将非常方便。
例如,为了自动取消我从MySQL数据库中获取的个人信息,代码中只有1000-2000 unset()
看上去太乱了!
答案 0 :(得分:0)
虽然你的问题没有完全明白,但是这样做的可能性很小:
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
大多数情况下,如果你开始考虑这样的事情,你就会走错路。它有时有助于退后一步,找出真正的问题所在。你的问题并不是真的没有可能使变量失效。