Hangisini ve ne zaman kullanmalıyım: node_load () veya entity_load ()?


24

Başlık her şeyi söylüyor.

Entity_load'ın veritabanı sorgularını azaltırken birden fazla düğümü yüklemek için performanslı ve etkili bir yol sağladığını anlıyorum, bu nedenle bu örnekte entity_load () kullanmam gerektiğini düşünüyorum. Fakat sadece bir düğümü istediğimde, hangisini kullanmalıyım? Ve node_load (), daha genel entity_load () api lehine d8'de kullanımdan kaldırılacak mı?

Sanırım aynı soru tanıdık user_load () için de geçerli.


3
Ugh ... önce kodu biraz okumuş olmalıydı. Node_load, yalnızca entity_load için bir sarmalayıcı olan node_load_multiple için birkaç argüman denetimi olan bir sarmalayıcıdır. Bu nedenle performans, her ikisi için de farklı olmayacaktır, doğrudan entity_load () işlevini çağırmak dışında, belki birkaç ek işlev çağrısından tasarruf edebilirsiniz. Bkz api.drupal.org/api/drupal/modules--node--node.module/function/... ve api.drupal.org/api/drupal/modules--node--node.module/function/... .
Torrance

Yanıtlar:


32

node_loadsadece bir süslü sarıcıdır entity_load.

Bu bir sarmalayıcı olan node_loadçağrılar . Bu, performans bilgisinin, çok fazla düğüm yüklemek zorunda olmadığınız sürece, hangi işlevi kullandığınız konusunda gerçekten fazla bir fark olmadığı anlamına gelir.node_load_multipleentity_load

node_load üzerinde birçok avantajı var entity_load

  • Daha basit
  • Kod okunabilirliğini arttırır
  • düğüm nesnesi olan bir dizi yerine düğüm nesnesini döndürür

Sonuç olarak, node_loadmümkün olduğunca her zaman kullanmanız gereken bir kolaylık, daha sonra node_load_multiplebirçok düğümü yüklemeniz gereken durumlara başvurmak .

entity_load türü bilmiyorsanız veya bir değişkende sakladıysanız, objeleri yüklemek için kullanılmalı, bu durumda

entity_load($type, ...);

1
sonuçta node_load()biz alışkınız.
Sivaji

9

Yüklemek için tek bir düğüme sahipken node_load () kullanın ve bunlardan daha fazlasına sahip olduğunuzda node_load_multiple () kullanın. Örneğin, varlık türünü önceden bilmiyorsanız, doğrudan entity_load () kullanın entity_load($type, array($id)).

Entity_load () öğesinin tutarsız bir şekilde adlandırıldığını, birden çok sonuç yüklenmesine izin verdiği ve sonuç dizisini döndürdüğü için aslında entity_load_multiple () olması gerektiğini unutmayın.


4

node_load()Varlık API'sinin Drupal 7'de tanıtılmasından önce var olan fonksiyondur. Aradaki fark entity_load(), bunun gibi bir düğüm nesnesinin yüklenmesi için spesifik olan parametreleri kabul etmesidir $vid. Fonksiyon çağırır node_load_multiple(); uyumluluk nedeniyle faydalıdır ve daha az parametre gerektirdiğinden.

$node = node_load($nid);
$nodes = entity_load('node', array($nid));

Drupal 8'de, node_load(), node_load_multiple()ve entity_load()artık yok. Bu Drupal 9 kararlı salıverildiği zaman çıkarılırlar).
Ayrıca, Drupal 8’de, Drupal 8’den bu yana yapılan aramalarda bu işlevlerin değiştirilmesi gerekir:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.