PHP - Convert Array to Object with stdClass
مرحبا استاذي عبدالله، معلومة مفيدة واذكر اني قرأت عنها في كتاب لدي
قد اتفق معه في موقع PHP.NET لم يتم شرح stdClass وتحويل المصفوفة الى كائن كما فعل، ولكن هناك كتب تكلمت عن هذه الطريقة بشكل جيد ومصادر اخرى ايضاً. بشكل أو بآخر وصلتنا المعلومة لتحويل المصفوفة الى كائن. ولكن يظهر تساؤل اخر، بماذا استفيد من تحويل الـ Array الى Object !. بعد بحث بسيط بالانترنت. وجدت ان المصوفات اقل استهالكاً للذاكرة من الكائنات ولذلك قد تكون أسرع في المعالجة.
هنا بعض الاسباب التي اراها منطقية:
- الكائنات تستهلك الذاكرة اكثر من المصفوفات بنسبة ( 2 الى 10 ) بالمئة.
objects need more memory than arrays (+ 2-10 percent)
- إذا كانت بعض قيم المصفوفة (رقمية)، لا يحتفظ بهم كنص (Strings)، وعلى العكس الكائنات يحفظ القيمة كماهي.
if array values are numeric, don't save them as strings!
- افتراضياً المصفوفات ترسل البيانات بالقيمة passing by value بينما الارسال الافتراضي بالكائنات هو ارسال البيانات بالمصدر passing by reference
By default, Arrays pass by value (copied around), conversely, by default, objects pass values by references.
إذاً بماذا، استفيد من تحويل المصفوفة الى كائن ؟ شكراً لك استاذ عبدالله على سعة صدرك.
شكراً جزيلاً على المعلومات التى حتماً أفادتنى و لكن فى بعض الأحيان يكون لديك خرج أحد ال Models التى تستخدمها هو على شكل object
و لكن لدى فضول بخصوص توضيحك :
لماذا لا تكون ال OOP بإستخدام ال Arrays و يتم تسميتها AOP ؟ بما أن ذلك سيوفر فى الذاكره ؟ هل يرجع ذلك للخاصية الثانية التى ذكرتها بشأن نوع القمية ؟
العفوا استاذ عبداللة. قد تقصد اسلوب Data structures في صناعة Class يحتوي بداخله على Array، يعني ( Array-Based ) بالامكان وتطبيقها سهل ومن خلالها يشرح الداتا ستركتشر لكن .. ستصبح ( اكثر - استهلاكاً للذاكرة ) من الـ array العادية. ولو كان هناك سبب او خوارزمية ما لن تستطيع كتابتها الا عندما تحول array الى object او تصنع كلاس جديد ، يكون الامر مقنع. لكن Array في لغة PHP من اهم مايميز لغة PHP في مرونتها وسرعتها. لمذا احتاج اسلوب اخر غير Array اذا لم يكن هذا الاسلوب اسرع في الاداء
التعليقات