it-swarm.asia

أيهما يجب أن أستخدمه ومتى: node_load () أو لكيان الحمل ()؟

العنوان يقول كل شيء.

أنا أتفهم أن الكيان_لود يوفر وسيلة مؤثرة وفعالة لتحميل عدة عُقد مع تقليل استعلامات قاعدة البيانات ، لذلك أفترض في هذا المثال أنني يجب أن أستخدم الكيان (). ولكن عندما أريد فقط عقدة واحدة ، والتي يجب استخدامها؟ وهل سيتم إهمال node_load () في d8 لصالح واجهة api لكيان الحمل ()؟

أعتقد أن نفس السؤال ينطبق على حجم_المستخدم المألوف () أيضًا.

25
Torrance

node_load مجرد غلاف فاخر لـ entity_load.

هذا هو node_load مكالمات node_load_multiple وهو مجمع لـ entity_load. هذا يعني أن الأداء الحكيم ليس هناك اختلاف كبير ، وهي الوظيفة التي تستخدمها ، إلا إذا كان عليك تحميل الكثير من العقد.

node_load له مزايا عديدة تزيد عن entity_load

  • إنه أبسط
  • يزيد من قراءة التعليمات البرمجية
  • تقوم بإرجاع كائن العقدة بدلاً من صفيف مع كائن (كائنات) العقدة

إذاً ، node_load هي راحة يجب عليك استخدامها دائمًا كلما أمكن ذلك ، ثم تلجأ إلى node_load_multiple للحالات التي تحتاج فيها إلى تحميل العديد من العقد.

يجب استخدام entity_load لتحميل الكيانات عندما لا تعرف النوع ، أو تخزينه في متغير ، وفي هذه الحالة يمكنك القيام بذلك

entity_load($type, ...);
33
googletorp

استخدم node_load () عندما يكون لديك عقدة واحدة للتحميل و node_load_multiple () عندما يكون لديك المزيد منها. استخدم الكيان () () مباشرةً عندما لا تعرف نوع الكيان مقدمًا ، على سبيل المثال entity_load($type, array($id)).

لاحظ أن اسم_كيان () لا يتم تسميته بشكل غير متسق ، بل يجب أن يكون في الواقع كيان _ حمولة_متعددة () ، لأنه يسمح بتحميل نتائج متعددة ويعرض مصفوفة من النتائج.

9
Berdir

node_load() هي الوظيفة التي كانت موجودة قبل إدخال واجهة برمجة تطبيقات الكيان في Drupal 7. الفرق مع entity_load() هي أنها تقبل المعلمات الخاصة بتحميل كائن عقدة ، مثل $vid. تستدعي الوظيفة node_load_multiple() ؛ وهي مفيدة لسبب التوافق ، ولأنها تتطلب معلمات أقل.

$node = node_load($nid);
$nodes = entity_load('node', array($nid));

في Drupal 8 ، node_load() ، node_load_multiple() و entity_load() سيتم إيقافها. يتم إزالتها عند Drupal = 9 سيكون لها إصدار مستقر).
علاوة على ذلك ، في Drupal 8 مكالمات لتلك الوظائف بحاجة إلى التغيير ، حيث في Drupal 8:

  • node_load() لا تستخدم $vid كمعلمة ثانية
  • entity_load() و node_load_multiple() لا تستخدم $condition كمعلمة ثانية (وقد تم وضع علامة عليها كموقوفة بالفعل في = Drupal 7)
5
kiamlaluno