maybe_unserialize

Десериализует переданное значение, если оно сериализовано или просто возвращает переданное значение.

Функция проверяет переданное значение сериализовано ли оно (php функция serialize()), если – да, то к нему будет применена функция unserialize(), если – нет, то функция просто вернет начальное значение.

Противоположный аналог этой функции – maybe_serialize() – сериализует и возвращает, если передан массив/объект.

Работает на раннем этапе загрузки WordPress, еще до константы SHORTINIT.
✈ 1 раз = 0.000133с = быстро | 50000 раз = 6.00с = быстро PHP 7.0.2, WP 4.4.1

Хуков нет.

Возвращает

Смешанный тип: десериализованные данные, могут быть любого типа.

Использование

maybe_unserialize( $original );
$original(строка) (обязательный)
Начальные данные, которые нужно проверить и если нужно десериализовать.

Примеры

#1 Демонстрация работы

В WordPress функция maybe_unserialize() применяется во многих местах и чаще всего нет необходимости заботиться о том, какие данные мы размещаем или получаем из БД. Допустим при сохранении массива в произвольное поле записи с помощью update_post_meta(), данные автоматически сериализуются при сохранении и десереализуются при получении (get_post_meta()). Тоже самое происходить при сохранении и получении опций (add_option(), get_option()).

Однако, в некоторых случаях при ризработке плагинов или тем, такую проверку нужно делать вручную и тут вам поможет функция maybe_unserialize() и её аналог maybe_serialize().

Допустим, мы сохранили в БД данные, которые являются структурированными данными: массивом/объектом. При получении этих данных они нужны в структурированном виде. Для этого получим данные и “прогоним” их через функцию maybe_unserialize():

<?php
function maybe_unserialize( $original ) {
	if ( is_serialized( $original ) ) // don't attempt to unserialize data that wasn't serialized going in
		return @unserialize( $original );
	return $original;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *