0

是否可以创建一个在使用 X 次时取消设置变量的函数?

我知道unset()它是如何工作的。为了安全起见,这将很方便。

例如,要自动取消设置我从 MySQL 数据库中获取的个人信息,unset()代码中有 1000-2000 看起来很乱!

4

1 回答 1

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

大多数情况下,如果你开始考虑这样的事情,你就走错了路。有时退一步找出真正的问题是有帮助的。您的问题并不是真的不可能使您的变量过期。

于 2012-11-09T14:11:37.190 回答