Varlıklardan değer almanın iki yolu vardır:
field_get_items
Bir alanın değerini kullanın ve alınentity_metadata_wrapper
Bir alanın değerini kullanın ve alın
Her ne kadar entity_metadata_wrapper
dil 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_item
Tek 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_wrapper
performans 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 .