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()
1 раз – 0.000003 сек
(швидкість світла) | 50000 разів – 0.03 сек
(швидкість світла) |
PHP 7.4.25, WP 5.8.2

Хуків немає.

Повертає

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

Використання

maybe_serialize ($ data);
$data
(рядок/масив/об’єкт) (обов’язковий)
Значення, яке потрібно перевірити та серіалізувати у разі потреби.

Приклади

0

#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 6.0.2

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

	/*
	 * Double serialization is required для 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *