Grundlegendes zur Magento-Registrierung


13

Ich habe mich immer gefragt, wo alle Registrierungsdaten in Magento gespeichert sind.

Ich weiß, dass auch Singleton- Objekte in der Registrierung gespeichert sind. Und die Registrierung ist nur eine statische Array-Variable der Mage- Klasse.

Ich habe hier ein paar Fragen, um meine Verwirrung zu beseitigen:

  1. Ist die Registrierung für verschiedene Benutzer unterschiedlich? Ich meine, wird es pro Benutzer (pro HTTP- Anfrage) erstellt?

Beispielsweise,

Mage::register('foo', 'Hello World'); //set a value for foo
Mage::registry('foo'); //will this return hello world for all HTTP users ?
  1. Werden Registrierungsdaten in Sitzungen gespeichert? Wenn nicht, wie erkennt Magento, welcher Benutzer die Registrierungsdaten aufgerufen hat?

Ich habe den Blog-Artikel von Alan Storm sowie seine Antwort auf StackOverFlow dazu gelesen . Aber ich konnte die Verwirrung nicht töten. Bitte korrigieren Sie mich, wenn ich denke, dass meine Grundlagen durcheinander sind. Vielen Dank




danke Amit Bera, ich habe diesen Artikel und die SOF-Antwort von Alan gelesen, bevor ich diese Frage gestellt habe. Ich konnte meine Antworten von dort nicht ganz bekommen.
Hashid

Antworten:


23

Die Registrierung speichert Daten im Speicher, der für diese Anforderung spezifisch ist (und nicht für den Benutzer oder irgendetwas anderes), und bleibt nur für die Dauer dieser Anforderung bestehen. Das Prinzip ist sehr einfach, die MageKlasse wird für jede Anforderung als Singleton-Objekt instanziiert und das instanziierte Mage-Objekt bleibt im Speicher und ist in allen Klassen (und Vorlagen) zugänglich, bis die Anforderung abgeschlossen und die Antwort gesendet wurde.

Da das Objekt ein Singleton ist, erhalten Sie bei jedem Zugriff dasselbe Objekt. Alles, was passiert, ist, dass Sie Werte in diesem Objekt speichern. Wenn also eine Klasse einen Wert speichert und eine andere darauf zugreift, arbeiten beide auf demselben Objekt und die zweite Klasse kann den Wert abrufen, den die erste Klasse festgelegt hat.


1
Es ist also nur für EINE Anfrage am Leben? Das heißt, wenn ich eine Seite in Magento lade, lautet eine Anforderung FERTIG und die Registrierungsdaten werden gelöscht?
Hashid

4
Ja-Werte, die Sie mit festlegen Mage::register(), werden nur für diese Anforderung beibehalten. Wenn Sie benutzerspezifische Daten speichern möchten, sollten Sie die Sitzung verwenden, die Registrierung ist eigentlich nur so konzipiert, dass Daten zwischen Klassen portierbar sind.
Jonathan Hussey

1
Das macht Sinn! Gleiches gilt auch für die Singleton-Instanz?
Hashid

1
Ja, genau das gleiche - wenn Sie sich die getSingleton()Methode der MageKlasse ansehen, werden die Daten tatsächlich in der Registrierung gespeichert.
Jonathan Hussey

3

Die Registrierung wird im Arbeitsspeicher gespeichert und erfolgt per HTTP-Anforderung, sodass Sie keine Daten zwischen verschiedenen Anforderungen oder Benutzern austauschen können.


Aber wie ordnet Magento die HTTP-Anforderung und die Registrierung zu?
Hashid

2

Magento Registry im Speicher der Anwendung gespeichert .

Wann immer Ihr Skript ausgeführt wird, ist alles, was Sie in der Registrierung gespeichert haben, nicht mehr vorhanden, sodass Sie sich keine Sorgen mehr machen müssen, wenn Sie es löschen (es sei denn, das Skript, das Sie ausführen, speichert große Objekte in der Registrierung und durchläuft eine Menge Daten).

In diesem Fall müssen Sie die Registrierung Ihrer Einträge aufheben, wenn Sie damit fertig sind.

Die Registry ist nur eine statische Eigenschaft der Mage-Klasse. siehe Details

Trotzdem konnte ich keine gute Erklärung finden

2) Für jeden Benutzer gibt es eine separate Registrierung pro Anforderung auf dem Server.

Ich hoffe, dies wird wenig Klarheit in Ihrem Kopf schaffen


danke liyakat. Ich habe vor dem Posten prattski.com/2014/09/23/using-the-magento-registry-mageregister gelesen : P Aber wie ordnet Magento die Variable und den Benutzer zu?
Hashid

1
@Hashid, mit Alans Blog kannst du dir auch mehr ein Bild machen. Wie die Registrierung mit jeder Anforderung im Code funktioniert, folgt. alanstorm.com/magento_registry_singleton_tutorial
liyakat

Lesen Sie das auch :-)
Hashid
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.