drupal_static () bir FUNCTION değişkeni kullanır, bu ne anlama geliyor?


21
function drupal_set_page_content($content = NULL) {
     $content_block = &drupal_static(__FUNCTION__, NULL);
     $main_content_display = &drupal_static('system_main_content_added', FALSE);

 if (!empty($content)) {
   $content_block = (is_array($content) ? $content : array('main' => array('#markup' => $content)));
 }
 else {
   $main_content_display = TRUE;
   return $content_block;
  }
}

Bu pasajı common.inc'ten yapıştırılır. Biz geçmek __FUNCTION__için drupal_static()ama ne bu değişken anlama geldiğini bilmiyorum. Dış fonksiyonun kendisi için bir önbellek anlamına mı geliyor? O nasıl çalışır? Dönmeden önce işlevin içinde işlenmiş hiçbir veri göremiyorum $content_block.

Yanıtlar:


34

__FUNCTION__Sözde biridir Sihirli Sabitleri.Kayaların PHP'nin.

Tek yaptığı, sabitin içinde bulunduğu fonksiyonun ismini taşıyan bir dize döndürmektir.

Örneğin:

function my_strangely_named_function() {
  print __FUNCTION__;
}

Yukarıdaki 'my_strangely_named_function' yazacaktır.

Drupal, bu sabiti statik önbelleği ile kullanır, böylece her önbellek başka bir işlevden tanımlanabilir ve bu şekilde tanımlanabilir bir şekilde temizlenebilir.

Kodunuzun kısaltılmış bir sürümünü kullanmak için:

function drupal_set_page_content($content = NULL) {
  $content_block = &drupal_static(__FUNCTION__, NULL);
}

Drupal yaşam döngüsündeki başka herhangi bir işlev çağırabilir:

drupal_static_reset('drupal_set_page_content');

Ve bu, belirli bir işlevin önbelleğini temizleyecektir, böylece bir dahaki sefere veri denir sanki yeniden oluşturulmuş.

Statik önbellek kalıbının yalnızca temel kullanımı budur, kendisinin dokümantasyon sayfasındadrupal_static() daha fazla bilgi ve örnekler bulabilirsiniz .


Cevabınız için teşekkür ederim, bu FUNCTION'ın ne anlama geldiğini şimdi anlıyorum, fakat dahası, bu $ content_block değişkeni ilk olarak nerede yaratıldı, çünkü bu kodda bulabildiğim tek şey önbellekten veri alıyor, ancak bu alanda oluşturulan önbellek nerede? ilk etapta, teşekkür ederim!
Drupal cai

1
PHP genelindeki statik değişkenleri tanıyor musunuz?
Clive

1
ilk yorumu yapmak ve ikincisini arttırmak için 'önbellek' ififadenin DOĞRU şubesinde oluşturulur
Jimajamma

1
@Jimajamma ne dedi, ayrıca drupal_staticonu kullanan sistemdeki tüm fonksiyonlar için önbellek kayıtlarını tutuyor.
Clive

1
Bu benim PHP cehaletimin bir vitrini olabilir, ama - neyse: neden varlık başvurusunda diyorlar: drupal_staticdeğil &drupal_staticmi?
Artur

3

Daha detaylı bilgi için http://blogs.sourceallies.com/2012/02/static-caching-in-drupal/ adresinden ulaşabilirsiniz. İşte ondan bir alıntı:

... önbellekleme (her türlü, sadece statik önbellekleme değil) sorumlu bir şekilde yapılmalıdır. Önbellek kullanımının aşırı kullanımı, yüksek trafikli web sitelerini çökertebilecek bellek taşmasıdır. Ayrıca, önbelleğe almanın pahalı olan büyük veri yapıları için kullanılması gerektiğini de unutmayın. Son olarak, önbelleğe almayı, yalnızca önbelleğe aldığınız şeyin tekrar gerekli olacağından emin olmanız durumunda (ör., Drupal’daki menü verileri) kullanın. Bu listeyi bir daha asla kullanmayacaksanız, bir ad, adres veya renk listesini önbelleğe almanın bir anlamı yoktur. Yenilerini taktıktan sonra eski araba lastiklerini kurtarmak gibi olur.

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.