Per ottenere valori dalle entità, ci sono due modi:
- Usa
field_get_itemse ottieni il valore di un campo - Usa
entity_metadata_wrappere ottieni il valore di un campo
Sebbene entity_metadata_wrapperelimini 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_wrappertutto in una volta? (Rendere field_get_itempiù 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_wrapperfunziona, 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 () .