シングルトンデザインパターンを使用してフック呼び出し間でデータを保持する単純なDrupalモジュールを作成しました。しかし、これは私が望むようにデータを保存しているようには見えません。
また、これは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();
}
エラーメッセージは
注意:未定義の変数:TempStore-> getFileName()の_fileName
これは同じ関数呼び出しで発生するため、これはPHPがこの種の処理をどのように処理するかについての私の理解の失敗であり、Drupalとは実際には関係がないと思います。
誰かが何が悪いのかわかりますか?