Varlıklardan değer almanın iki yolu vardır:
field_get_itemsBir alanın değerini kullanın ve alınentity_metadata_wrapperBir alanın değerini kullanın ve alın
Her ne kadar entity_metadata_wrapperdil farklarını soyutlasa da, API'si bazen PHP 5.3 kullanırken hala garip. Örneğin, uzun bir metin alanının değerini almak genellikle bu yola gider:
$field = $wrapper->field->value();
print $field['safe_value'];
Neyse ki, PHP 5.4 bu sözdizimini destekler: print $wrapper->field->value()['safe_value'];.
Ama sorum daha çok performansla ilgili. İkisi de nasıl çalışıyor? Her değer talep ettiklerinde veritabanını sorguluyorlar mı? Her entity_metadata_wrapperşeyi bir kerede ister mi? ( field_get_itemTek değerli alımlar için daha uygun hale getirme .)
Drupal kaynağına derinlemesine dalmaya yetecek kadar cesur değilim.
field_get_items()sıfır veritabanı yükü bu yüzden bu oldukça açık ve kapalı bir dava düşünüyorum :)
field_get_items()sıfır veritabanı yükü oluşur? Verilerini bir yere götürmeli, değil mi?
entity_metadata_wrapperperformans açısından nasıl çalıştığını bilmekle gerçekten ilgileniyorum .
field_get_items()böylece ek yük zaten gerçekleşmiştir ... D7'de dürüst olmak gerekirse biraz boğulmuş bir rota var
field_view_field()bir alanı oluşturmak içindir. Bir alanın değerini alma işlevi field_get_items () şeklindedir .