با سلام و احترام:
من مفاهیم serialization در php رو مطالعه کردم و کاربردهای اون رو تا حدودی دیدم ولی متوجه کاربرد اساسی این مبحث نشدم که اصلا برای چه کاربرد اساسی از این مورد استفاده میشه
سلام
باهاش میتونی یه کلاس رو توی فایل text ذخیره کنی و دوباره برگردونی و دوباره مثل کلاس باهاش کاری کنی
مثلا بجای این که بیای بگی (نوشتن توی فایل)
$headers = ['id', 'name', 'surname'];
$users = [
[1, 'reza', 'parsian'],
[2, 'ali', 'abasi'],
[3, 'heydar', 'azari']
];
$file = fopen('users.csv', 'w');
fputcsv($file, $headers);
foreach ($users as $user) {
fputcsv($file, $user);
}
fclose($file);
(خوندن از فایل)
$lines = [];
$lines[] = implode(',', $headers);
foreach ($users as $user) {
$lines[] = implode(',', $user);
}
$csvString = implode("\n", $lines);
file_put_contents('users.csv', $csvString);
میتونی بگی
$headers = ['id', 'name', 'surname'];
$users = [
[1, 'reza', 'parsian'],
[2, 'ali', 'abasi'],
[3, 'heydar', 'azari']
];
$data = [
'headers' => $headers,
'users' => $users
];
$serializedData = serialize($data);
file_put_contents('users_data.txt', $serializedData);
و اینطوری دیتا رو بخونی و مثلا ارایه باهاش دوباره کار کنی
$restoredData = unserialize(file_get_contents('users_data.txt'));
print_r($restoredData);
این هم نمونه کار با کلاسش
<?php
class UsersDB
{
private $headers;
private $data;
public function __construct($headers, $data)
{
$this->headers = $headers;
$this->data = $data;
}
public function save($filename)
{
file_put_contents($filename, serialize($this));
}
public static function load($filename)
{
if (!file_exists($filename)) return null;
return unserialize(file_get_contents($filename));
}
public function show()
{
echo implode(", ", $this->headers) . "\n";
foreach ($this->data as $row) {
echo implode(", ", $row) . "\n";
}
}
}
// Usage
$headers = ['id', 'name', 'surname'];
$users = [
[1, 'reza', 'parsian'],
[2, 'ali', 'abasi'],
[3, 'heydar', 'azari']
];
$db = new UsersDB($headers, $users);
$db->save('users.dat');
// Later...
$loaded = UsersDB::load('users.dat');
if ($loaded) $loaded->show();
سلام
یکی کاربرد های اساسی که داره برای ذخیره سازی دیتا توی دیتابیس هست .
مثلا برای ابجکت ها ،میتونیم داخل دیتابیس ذخیره کنیم، ولی باید serialize بشه
$cart = new Cart();
$cart->items = ['id' => 10, 'qty' => 3];
$stored = serialize($cart);
INSERT INTO carts (data) VALUES ('$stored');
برای گرفتن دیتا هم
$data = unserialize($row["data"]);
-یه کاربرد دیگش هم میتونه ارسال دیتا بین صفحات باشه.
مثلا یه سری اطلاعات داریم که میخواییم از طریق یه فیلد هیدن ارسال کنیم و خب میخواییم کسی هم متوجه نشه
$user = [
"id" => 5,
"roles" => ["admin", "editor"],
"permissions" => ["add", "delete"]
];
$encoded = base64_encode(serialize($user));
توی صفحه بعد هم باید دیتا رو بگیریم
$user = unserialize(base64_decode($_POST["data"]));
کاربرد های دیگه ای هم داره مخصوصا توی cache وqueue وsession ها
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟