假设我有以下内容:
<?php
class MyClass {
public $validThings = array("Stuff");
//checks to see if $input is in the array $validThings
public function valid($input) {
return is_int(array_search($input, $this->validThings);
}
}
我们预计会出现以下情况:
$myClassInstance->valid("Stuff");//finds 'Stuff'
$myClassInstance->valid("Things");//doesn't find 'Things'
现在假设我将 $validThings 的初始化代码更改为:
public $validThings = array("Stuff", "Things");
我们期望:
$myClassInstance->valid("Stuff");//finds 'Stuff'
$myClassInstance->valid("Things");//finds 'Things'
但是,我看到的行为是第二个调用仍然找不到“事物”。我怀疑这与 PHP 的缓存方式有关,但我不知道具体是什么。它是高度可重现的:我可以在代码中以任何方式更改数组,只要我不在函数调用中修改该成员变量,它将保持原始值......即使在 apache 硬重启时也是如此。
有没有人看到这个可以解释这种行为?
澄清一点:这里发生了某种形式的缓存行为,这与 php 的一些实现细节或围绕 php 的缓存有关。这不是代码错误;这只是此代码揭示的一种行为。此外,我们正在使用hidef,这可能是一个突出的细节和 php 5.2.10