Untuk mendapatkan nilai dari entitas, ada dua cara:
- Gunakan
field_get_itemsdan dapatkan nilai suatu bidang - Gunakan
entity_metadata_wrapperdan dapatkan nilai suatu bidang
Meskipun entity_metadata_wrapperabstrak menjauhkan perbedaan bahasa, API-nya terkadang masih canggung, terutama saat menggunakan PHP 5.3. Misalnya, mendapatkan nilai bidang teks yang panjang biasanya melewati rute ini:
$field = $wrapper->field->value();
print $field['safe_value'];
Untungnya, PHP 5.4 mendukung sintaks ini: print $wrapper->field->value()['safe_value'];.
Tetapi pertanyaan saya lebih mementingkan kinerja. Bagaimana cara keduanya bekerja? Apakah mereka meminta basis data setiap kali mereka meminta nilai? Apakah entity_metadata_wrappermeminta semuanya sekaligus? (Membuat field_get_itemlebih cocok untuk pengambilan nilai-tunggal.)
Saya tidak cukup berani untuk menyelam jauh ke sumber Drupal.
field_get_items()mengeluarkan nol overhead database jadi saya pikir itu kasus yang cukup terbuka dan tertutup :)
field_get_items()menimbulkan overhead database nol? Itu harus mendapatkan datanya di suatu tempat, kan?
entity_metadata_wrapperkerjanya, kinerja-bijaksana.
field_get_items()sehingga biaya overhead telah dikeluarkan ... ini sedikit rute yang dicekik di D7 untuk jujur
field_view_field()adalah untuk merender bidang. Fungsi untuk mendapatkan nilai bidang adalah field_get_items () .