WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

maybe_serialize() WP 2.0.5

Сериализует (превращает в строку) переданные данные, если нужно.

Эту функцию принято использовать в WordPress когда заранее не известно передается сериализованная или простая строка.

Функция сериализует только массивы, объекты и, для обратной совместимости, уже сериализованную строку. Все остальное, например, простая строка, будет возвращено без изменений.

Сериализованная строка будет сериализована повторно.

$data = 'a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}';
echo maybe_serialize( $data );
// s:50:"a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}";

Функцию можно использовать на раннем этапе загрузки WordPress, еще до определения константы SHORTINIT.

maybe_unserialize() — обратная функция - десериализует переданное значение, если нужно.

Работает на основе: is_serialized()

Хуков нет.

Возвращает

Разное. Сериализованные данные.

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

maybe_serialize( $data );
$data(строка/массив/объект) (обязательный)
Значение, которое нужно проверить и сериализовать в случае необходимости.

Примеры

#1 Пример, что делает функцию с разными значениями

// Строка вернется нетронутой.
echo maybe_serialize( 'Привет мир!' ); // Привет мир!

// Числа (в том числе float), логические true/false/null, вернется нетронутыми.
echo maybe_serialize( 55 );    // 55
echo maybe_serialize( 4.560 ); // 4.560

var_dump(  maybe_serialize( true )  ); // true
var_dump(  maybe_serialize( null )  ); // null

// Массив или объект вернется сериализованной строкой.
echo maybe_serialize( [ 1 => 'Привет мир!', 'foo' => 'bar' ] );
// a:2:{i:1;s:12:"Привет мир!";s:3:"foo";s:3:"bar";}

// Сериализованная строка будет сериализована повторно.
echo maybe_serialize( 'a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}' );
// s:50:"a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}";

Список изменений

С версии 2.0.5 Введена.

Код maybe_serialize() WP 5.7.2

<?php
function maybe_serialize( $data ) {
	if ( is_array( $data ) || is_object( $data ) ) {
		return serialize( $data );
	}

	/*
	 * Double serialization is required for backward compatibility.
	 * See https://core.trac.wordpress.org/ticket/12930
	 * Also the world will end. See WP 3.6.1.
	 */
	if ( is_serialized( $data, false ) ) {
		return serialize( $data );
	}

	return $data;
}

Из метки: serialize (сериализация)

Еще из раздела: Вспомогательные

1 коммент
    Войти