Untuk mendapatkan nilai dari entitas, ada dua cara:
- Gunakan
field_get_items
dan dapatkan nilai suatu bidang - Gunakan
entity_metadata_wrapper
dan dapatkan nilai suatu bidang
Meskipun entity_metadata_wrapper
abstrak 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_wrapper
meminta semuanya sekaligus? (Membuat field_get_item
lebih 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_wrapper
kerjanya, 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 () .