Проверка сериализованных объектов
-
06-07-2019 - |
Вопрос
Есть ли встроенный способ узнать, является ли данная переменная сеанса сериализованным объектом? Скажем, я получаю значение типа $ _SESSION ['foo'], но я не знаю, было ли оно изначально строкой или это сериализованный объект. Есть какой-то способ проверить, или после сериализации PHP просто видит строку как строку как строку? Р>
Решение
Это довольно распространенное заблуждение, что вам нужно вручную сериализовать объекты, прежде чем запускать их в сеанс. Это не относится к делу. Вы можете просто назначить экземпляр объекта для слота в $ _ SESSION
, и PHP автоматически сериализует и десериализует его для вас между запросами.
Другие советы
Строка является строкой является строкой. Я думаю, что лучшее, что вы сможете сделать, это просто попытаться десериализовать его, и если это работает, это работает. Если это не так, это не так.
Единственным другим вариантом будет использование регулярного выражения, чтобы увидеть, выглядит ли оно " как сериализованный объект. Просто запустить unserialize ()
на этом может быть проще.
Вы можете использовать is_a ... Вытащите его из сеанса и посмотрите, вам просто нужно знать имя класса для проверки.
if (is_a( Вы можете использовать is_a ... Вытащите его из сеанса и посмотрите, вам просто нужно знать имя класса для проверки.
if ( Вы можете использовать is_a ... Вытащите его из сеанса и посмотрите, вам просто нужно знать имя класса для проверки.
if (is_a( Вы можете использовать is_a ... Вытащите его из сеанса и посмотрите, вам просто нужно знать имя класса для проверки.
<*>
Похоже, PHP5 имеет более простой метод:
<*>
http://www.php.net/manual/en /function.is-a.php р>SESSION['foo'], 'UserInfoObject')) {
// We have one
}
Похоже, PHP5 имеет более простой метод:
<*>
http://www.php.net/manual/en /function.is-a.php р>SESSION['foo'] instanceof UserInfoObject) {
// We have one
}
Похоже, PHP5 имеет более простой метод:
<*>
http://www.php.net/manual/en /function.is-a.php р>SESSION['foo'], 'UserInfoObject')) {
// We have one
}
Похоже, PHP5 имеет более простой метод:
<*>