我正在构建一个Drupal 8网站。在模块预处理功能中,我试图检查页面加载时是否退出$_SESSION
变量,对该变量进行操作,然后取消设置该变量。这是代码的简化版本:
function geolocation_filter_preprocess_page() {
if (isset($_SESSION['blocked_submission'])) {
$messageText = $_SESSION['blocked_submission']['text'];
$messageType = $_SESSION['blocked_submission']['type'];
echo $messageText . $messageType;
unset($_SESSION['blocked_submission']);
}
}
如果我删除了unset
函数调用,那么文本将按预期打印出来。
除非代码执行进入if
块,否则无法取消设置变量,但是回声不会像未进入if
块那样发生。我以为PHP是线性执行的,所以我希望echo语句会发生,然后$_SESSION
变量将不会被设置。我想念什么?