برمجة

لماذا قد نستخدم serialize بدلا من json_encode !!

كمبرمجين فان استخدامنا للتقنيات المتاحه بصورة سليمة يوفر علينا الوقت والجهد وكذلك يسرع من اداء برمجياتنا. واليوم صدف وان خطر ببالي -بعد ان خططت لتنفيذ اداة معينة بلغة PHP- ايهما افضل استخدام الدالة serialize والا استخدام json_encode في تهئية البيانات قبل حفظها في قاعدة البيانات؟!
وبعد بضعة ساعات قضيتها محاولا البحث عن اجابة شافية وجدت ان لكل داله استخدامتها وفوائدها ومضارها حيث ان serialize قد تكون في بعض الاستخدمات افضل من json_encode والعكس صحيح ففي بعض الاحيان استخدام json_encode قد يكون اكفى وافضل.

قبل ان اتحدث عن الموضوع يمكنك التعرف على دالة serialize  وكذلك دالة json_encode من خلال موقع لغة PHP الرسمي وكتلميح بسيط فان serialize  هي دالة داخلية خاصة بلغة PHP تقوم لغة بي اتش بي من خلالها بتهيئة البيانات تمهيدا لحفظها او تخزينها مع الاحتفاظ بالبنية الاساسية الخاصة بلغة بي اتش بي لتلك البيانات من اجل استعادتها في المستقبل كمتغيرات بي اتش بي عن طريق unserialize اما json_encode فانها دالة تقوم بتحويل البيانات من مصفوفات وكائنات الى بيانات بلغة JSON ولهذا فان هناك فرق شاسع بين الدالتين على الرغم من ان الهدف من استخدامهما قريب الى حد ما وهو “تهيئة البيانات تمهيدا لحفظها او تخزينها”

حفظ خيارات النظام (system options)

في الحالة التي اقوم على دراستها وهي حفظ بيانات خيارات النظام في قاعدة بيانات وفي خيارات النظام فانك تحتاج للعديد من الخيارات وكل خيار قد يكون له العديد من القيم او يحتوي على مجموعة من القيم (او قد يكون مصفوفه) ولهذا من الافضل عمل حقل واحد في قاعدة البيانات لكل خيار من خيارات النظام وهذا الحقل يحتوي على بيانات تم تهيئتها بوساطة serialize بدلا من استخدام سجلات متعددة او حقول متعددة لحفظ بيانات الخيار الواحد. وافضل مثال حي على ذلك هو نظام خيارات النظام في برنامج النشر ورد برس. حيث تستخدم الورد برس جدول options لحفظ قيم الخيارات من خلال حقل واحد تم عمل تهئية لبياناته بوساطة serialize وبالتالي عند رغبة البرنامج الحصول على قيم خيار معين يتم عمل unserialize له.

والسؤال الان، لماذا استخدم serialize  و unserialize بدلا من json_encode و json_decode؟

تنويه: الجدير بالذكر ان تهيئة البيانات بلغة json يتيح لنا تمرير واستخدام تلك البيانات بلغات وانظمة اخرى ، مثلا يمكننا تهيئة البيانات بلغة json من خلال لغة PHP وتمريرها للغة python او javascript او حتى برنامج عميل client يقوم باستخدام مبدا API للتواصل مع السيرفر. اما serialize فانه لا يمكن استخدام البيانات التي تصدر عنها بلغات اخرى بالوضع الطبيعي ولهذا فان البيانات التي يتم توليدها عن طريق serialize  يجب ان تبقى او يتم التعامل معها من قبل PHP فقط وهذا امر يحد من انتشار البيانات خارج PHP. ولهذا فعلى المبرمج دوما ان يقرر ايهما يستخدم serialize  ام json_encode بحسب الحاجة والغاية المطلوبة.

مطور تطبيقات انترنت واداري سيرفرات لينكس.

أضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.