У меня есть этот файл SessionService.php, который обрабатывает функции session_start
и session_regenerate_id
.
Я использую абстрактный класс, который генерирует новый идентификатор сеанса и сохраняет его в переменной с именем $new_session_id
,Затем я возвращаю эту переменную в качестве аргумента абстрактной функции с именем returnNewSessionID()
, содержащейся в классе SessionRegenerateID
.Эта абстрактная функция предназначена для возврата переменной $new_session_id
.
Вот в чем проблема. Вместо возврата строки (сгенерированного нами нового идентификатора сеанса) возвращается NULL.
На createNewID()
вы видите, что я назначаю новый сгенерированный код переменной сеанса с именем $_SESSION['new_session_id']
.Повторяя эту переменную сеанса, я получаю ожидаемое значение от нее.В то же время, возвращая возвращенное значение из функции createNewID()
, я получаю NULL
.
Идентификатор генерируется.Скорее всего, проблема заключается в том, как эта переменная $new_session_id
используется внутри этих функций.Мне нужно выяснить, почему он не возвращается абстрактной функцией.
SessionService.php
interface SessionRegenerateInterface {
public function createNewID();
(... other unrelated functions ...)
}
abstract class AbstractSessionRegenerate implements SessionRegenerateInterface {
public function createNewID() {
$new_session_id = session_create_id();
$_SESSION['new_session_id'] = $new_session_id;
$this->returnNewSessionID($new_session_id);
}
abstract protected function returnNewSessionID($newID);
}
class SessionRegenerateID extends AbstractSessionRegenerate {
protected function returnNewSessionID($newID) {
return $newID;
}
}
SessionController.php
$RegenerateSession = new SessionRegenerateID;
$newID = $RegenerateSession->createNewID();
var_dump($newID); // outputs NULL
var_dump($_SESSION['new_session_id']); // outputs the generated session ID
У меня есть класс InputValidation, который логически идентичен этому, за исключением типа возвращаемого значения: TRUE или FALSE.Оно работает.Но теперь, когда я передаю переменную со строковым значением, она возвращает NULL.Я ценю помощь, чтобы понять, почему.