エンティティから値を取得するには、2つの方法があります。
field_get_itemsフィールドの値を使用して取得するentity_metadata_wrapperフィールドの値を使用して取得する
entity_metadata_wrapper離れ抄録言語の違い、そのAPIは、PHP 5.3を使用する場合は特に、まだぎこちない時々あります。たとえば、長いテキストフィールドの値を取得すると、通常は次のような経路になります。
$field = $wrapper->field->value();
print $field['safe_value'];
幸い、PHP 5.4は次の構文をサポートしていますprint $wrapper->field->value()['safe_value'];。
しかし、私の質問はパフォーマンスについてより懸念しています。どちらもどのように機能しますか?彼らは値を要求するたびにデータベースをクエリしますか?DOESは、entity_metadata_wrapper一度にすべてを要求しますか?(field_get_item単一値検索により適しています。)
Drupalのソースを深く掘り下げるのに十分な勇気はありません。
field_get_items()私はそれが:)かなりオープンでシャットケースだと思うので招き、データベースのオーバーヘッドをゼロ
field_get_items()データベースオーバーヘッドが発生しない理由 どこかでデータを取得する必要がありますよね?
entity_metadata_wrapperパフォーマンス面でどのように機能するかを知ることに本当に興味があります。
field_get_items()オーバーヘッドがすでに発生しています...正直に言うと、D7で絞め殺されたルートのビットです
field_view_field()フィールドをレンダリングするためのものです。フィールドの値を取得する関数はfield_get_items()です。