Per ottenere valori dalle entità, ci sono due modi:
- Usa
field_get_items
e ottieni il valore di un campo - Usa
entity_metadata_wrapper
e ottieni il valore di un campo
Sebbene entity_metadata_wrapper
elimini le differenze linguistiche, la sua API a volte è ancora imbarazzante, specialmente quando si utilizza PHP 5.3. Ad esempio, ottenere il valore di un campo di testo lungo di solito procede in questo modo:
$field = $wrapper->field->value();
print $field['safe_value'];
Fortunatamente, PHP 5.4 supporta questa sintassi: print $wrapper->field->value()['safe_value'];
.
Ma la mia domanda è più preoccupata per le prestazioni. Come funzionano entrambi? Interrogano il database ogni volta che richiedono un valore? Richieste entity_metadata_wrapper
tutto in una volta? (Rendere field_get_item
più adatto ai recuperi a valore singolo.)
Non sono abbastanza coraggioso da immergermi in profondità nella fonte Drupal.
field_get_items()
comporta un sovraccarico del database pari a zero, quindi penso che sia un caso piuttosto aperto e chiuso :)
field_get_items()
un sovraccarico del database zero? Deve ottenere i suoi dati da qualche parte, giusto?
entity_metadata_wrapper
funziona, dal punto di vista delle prestazioni.
field_get_items()
modo che l'overhead sia già stato sostenuto ... è un po 'un percorso strangolato in D7 per essere onesti
field_view_field()
è per il rendering di un campo. La funzione per ottenere il valore di un campo è field_get_items () .