我创建了一个简单的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;
}
Run Code Online (Sandbox Code Playgroud)
甚至在同一功能中也可以看到麻烦.
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();
}
Run Code Online (Sandbox Code Playgroud)
错误消息是
注意:未定义的变量:TempStore中的_fileName-> getFileName()
由于这发生在同一个函数调用中,我相信这是我对PHP如何处理这类事情并且与Drupal无关的理解失败.
谁能看出有什么问题?
这不是C++:
public function getFileName() { return $_fileName; }
public function setFileName($fileName) { $_fileName = $fileName; }
Run Code Online (Sandbox Code Playgroud)
应该:
public function getFileName() { return $this->_fileName; }
public function setFileName($fileName) { $this->_fileName = $fileName; }
Run Code Online (Sandbox Code Playgroud)