TrueAns

TrueAns

ما در طراحی و اجرای سیستم‌های مبتنی بر وب متخصص هستیم

تابع serialize و unserialize در php (پی‌‌اچ‌پی)

نوشته شده در تاریخ: مرداد ۱۱ام, ۱۳۹۷ نویسنده: admin

در این مقاله یک تابع جالب (البته از نظر من) و راهگشا در پی اچ پی را توضیح خواهیم داد که بعضی مواقع بزرگترین مشکلات را به راحتی آب خوردن حل می‌کند فکر کنید در برنامه نویسی سمت سرور میخواهید یک ساختار پیچیده مثل آرایه یا کلاس را ذخیره و بعد استفاده کنید و یا در طراحی سایت یک جدول را از مدیر سایت دریافت و در پایگاه داده ذخیره کنید با فرض این که هیچ گونه تغییری در پایگاه داده روی این داده‌ها انجام نخواهیم داد می‌توانیم این داده های پیچیده‌ی غیر قابل ذخیره و یا با قابلیت ذخیره سازی سخت را به سادگی با استفاده از تابع‌ serialize به رشته‌های تبدیل کرده و آنها را در فایل و فیلد جدولمان ذخیره کنید و در صورت لزوم استفاده از این داده ها آنها را با تابع unserialize به ساختاری اولیه‌شان تبدیل کنید و به راحتی در کدهای خود استفاده کنید.

نحوه تعریف و یا به عبارتی امضای تابع ‌serialize به صورت زیر می‌باشد که ورودی آن هر چیزی می‌تواند باشد و خروجی آن یک رشته سریال شده با نگارش خاص می‌باشد که این خروجی سریال شده را می‌توانید با تابع ‌unserialize ‌به ساختار اولیه برگردانید و استفاده کیند.

string serialize(mixed $value)

قالب خروجی تابع serialize برای هر یک از انواع داده‌های موجود در ‌پی اچ پی به صورت زیر می‌باشد

ساختار خروجی برای نوع داده‌‌ی رشته‌ای

s:lenght:stirng;

مثال:

$str=’hello world’;

$serStr=serialize($str);

echo $serStr;

خروزجی:

s:11:”hello world”;

ساختار خروجی تابع serialize برای اعدا صحیح

i:value;

مثال

$int=1396;

$serInt=serialize($int);

echo $serInt;

خروجی

i:1396;

ساختار خروجی تابع برای اعداد اعشاری شناور

d:value;

مثال

<?php
$f=1.37;
$serF=serialize($f);
echo $serF;
?>

خروجی

d:1.37;

ساختار تابع serialize برای نوع بولین

b:value;

در این نوع تابع مقادیر متناظر true , false را جایگزین می‌کند بنابرین مقدار value صفر یا یک می‌باشد.

مثال:

$bool=true;
$serBool=serialize($bool);
echo $serBool;

خروجی

b:1;

ساختار خروزجی تابع serialize برای NULL

Null
N;

مثال

$n=NULL;

$serN=serialize($n);

echo $serN;

خروجی

N;

ساختار خروجی تابع برای آرایه ها

a:size:{key definition;value definition;(این ساختار برای کلیه اعضای ارایه تکرار می‌شود)}

مثال

<?php
$a=array(‘a’=>’1′,’b’=>2,’4’=>’f’);
$serA=serialize($a);
echo $serA;
$cars = array(“Volvo”, “BMW”, “Toyota”);
echo ‘<br>’;
$serCars=serialize($cars);
echo $serCars;
?>

خروجی

a:3:{s:1:”a”;s:1:”1″;s:1:”b”;i:2;i:4;s:1:”f”;}
a:3:{i:0;s:5:”Volvo”;i:1;s:3:”BMW”;i:2;s:6:”Toyota”;}

ساختار خروجی این تابع برای اشیا

Object
O:strlen(object name):object name:object size:{s:strlen(property name):property name:property definition;(repeated per property)}

مثال

<?php
class Car {
function Car() {
$this->model = “VW”;
}
}

// create an object
$herbie = new Car();
$serHerbie=serialize($herbie);
echo $serHerbie;
?>

خروجی

O:3:”Car”:1:{s:5:”model”;s:2:”VW”;}

امضای تابع ‌unserialize به صورت زیر می‌باشد که می تواند رشته‌ی سریال شده با استفاده از تابع ‌serialize را به ساختار اولیه یا ساختار قبل از سریال شده برگرداند

mixed unserialize(string $str)

 

 

دیدگاه خود را بنویسید