Magento Kaydını Anlama


13

Her zaman merak ediyorum, tüm kayıt defteri verileri Magento'da nerede saklanıyor?

Singleton nesnelerinin bile kayıt defterinde saklandığını biliyorum . Ve kayıt defteri Mage sınıfının sadece statik bir dizi değişkeni .

Burada karışıklığımı gidermek için birkaç sorum var:

  1. Kayıt defteri farklı kullanıcılar için farklı mıdır? Yani kullanıcı başına ( HTTP isteği başına ) temelinde mi oluşturuldu?

Örneğin,

Mage::register('foo', 'Hello World'); //set a value for foo
Mage::registry('foo'); //will this return hello world for all HTTP users ?
  1. Kayıt defteri verileri oturumlarda depolanıyor mu? Değilse, Magento hangi kullanıcının kayıt defteri verilerini çağırdığını nasıl belirleyecek?

Alan Storm'un blog makalesini ve bununla ilgili StackOverFlow'daki cevabını okudum . Ama karışıklığı öldüremedim. Lütfen beni düzeltin Eğer temellerimin dağıldığını düşünüyorsanız. Teşekkürler




teşekkürler Amit Bera, ben bu soruyu ve bu soruyu göndermeden önce Alan'ın SOF cevabını okuyordum. Oradan cevaplarımı tam olarak alamadım.
Hashid

Yanıtlar:


23

Kayıt defteri, verileri kullanıcıya veya başka herhangi bir şeye değil de o isteğe özgü belleğe depolar ve yalnızca bu istek süresince devam eder. Prensip gerçekten çok basittir, Magesınıf her istek için tek bir nesne olarak örneklenir ve örneklenen Mage nesnesi bellekte kalır ve istek tamamlanana ve yanıt gönderilinceye kadar tüm sınıflarda (ve şablonlarda) erişilebilir.

Nesne bir singleton olduğundan, her eriştiğinizde aynı nesneyi alırsınız. Tüm bunlar, bu nesneye değerler depoladığınızdır, bu nedenle bir sınıf bir değeri depolarken diğeri ona eriştiğinde, ikisi de aynı nesne üzerinde çalışır ve ikinci sınıf, birinci sınıf kümesinin değerini alabilir.


1
Yani sadece BİR istek için hayatta mı? Magento'da bir sayfa yüklersem, bir istek YAPILIR ve kayıt defteri verileri temizlenir mi?
Hashid

4
Evet ile ayarladığınız değerler Mage::register()yalnızca bu istek için kalıcıdır. Kullanıcıya özel verileri depolamak istiyorsanız, oturumu kullanmanız gerekir, kayıt defteri verileri yalnızca sınıflar arasında taşınabilir hale getirmek için tasarlanmıştır.
Jonathan Hussey

1
mantıklı! Aynı durum singleton örneği için de geçerlidir?
Hashid

1
Evet tam olarak aynı - sınıf getSingleton()yöntemine bakarsanız Mageaslında verileri kayıt defterine depolar.
Jonathan Hussey

3

Kayıt defteri bellekte depolanır ve HTTP isteğine göre olduğundan, farklı istekler veya kullanıcılar arasında veri paylaşamazsınız.


Ancak Magento HTTP İsteği ve kayıt defterini nasıl eşleyecek?
Hashid

2

Magento Kayıt defteri uygulamanın belleğinde saklanır .

komut dosyanız çalıştığında, kayıt defterinde sakladığınız her şey gitti, bu yüzden temizlemeniz konusunda endişelenmenize gerek yok (çalıştırdığınız komut dosyası kayıt defterinde büyük nesneleri saklıyorsa ve çok fazla döngü oluşturuyorsa) veri).

Bu durumda, işiniz bittiğinde kayıtlarınızın kaydını silmeniz gerekir.

Kayıt Defteri, Mage sınıfının statik bir özelliğidir. ayrıntılar için bakınız

ama yine de gerçekten iyi bir açıklama bulamadım

2) her kullanıcı için sunucuda istek başına ayrı kayıt defteri olacaktır.

umarım bu zihninde biraz açıklığa kavuşur


teşekkürler liyakat. Göndermeden önce prattski.com/2014/09/23/using-the-magento-registry-mageregister okudum : P Ama Magento değişkeni ve kullanıcıyı nasıl eşleyecek ?
Hashid

1
@Hashid, Alan'ın blogu hakkında daha fazla fikir edinebilirsiniz. Kayıt defterindeki koddaki her istekle nasıl çalıştığını izleyin. alanstorm.com/magento_registry_singleton_tutorial
liyakat

Bunu da okuyun :-)
Hashid
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.