我創建了一個簡單的Drupal模塊,它使用單例設計模式來保持鉤子調用之間的數據。但是,這似乎並沒有像我希望的那樣保存數據。在鉤子調用之間通過PHP Singleton傳遞數據
此外,這似乎是一個PHP的理解問題,而不是Drupal,但如果有人有一個Drupal提示,這就是我正在做的。
的單設置
class TempStore {
private $_fileName;
public function getFileName() { return $_fileName; }
public function setFileName($fileName) { $_fileName = $fileName; }
function __construct() {
}
}
function MYMODULE_data() {
static $data;
if (!isset($data))
$data = new TempStore();
return $data;
}
麻煩的是,即使在同樣的功能可見。
function MYMODULE_file_insert($file) {
$token = $file->timestamp;
MYMODULE_data()->setFileName($token);
// error message: Notice: Undefined variable: _fileName in TempStore->getFileName()
$checkVal = MYMODULE_data()->getFileName();
}
該錯誤消息是
說明:未定義變量:_filename在TempStore->的getFileName()
由於這發生在相同的函數調用,相信這是一個在我理解PHP如何處理這類事情並且與Drupal沒有真正關聯方面失敗。
有人可以看到什麼是錯的?
感謝您的補充細節。我不知道「自我」訪問者。 – Kirk
沒有問題。以下是關於它的更多信息:http://stackoverflow.com/questions/151969/php-self-vs-this – anjunatl