0

X回使用されたときに変数の設定を解除する関数を作成することは可能ですか?

私はそれがunset()どのように機能するかを知っています。これは、セキュリティのために便利です。

たとえば、MySQL データベースから取得した個人情報を自動的に設定解除するunset()には、コードに 1000 ~ 2000 を含めると非常に面倒です。

4

1 に答える 1

0

Although your question doesn't make perfectly sense here's a possibility to do it:

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;
        }
    }
}

How to use:

$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

Mostly if you begin to think about stuff like this you're on the wrong way. It sometimes helps to take a step back and figure out what the real problem is. Your problem is not really that there is not a good possibility to expire your variables.

于 2012-11-09T14:11:37.190 に答える