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:
- 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 ?
- 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
Antworten:
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
Mage
Klasse 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.
quelle
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.getSingleton()
Methode derMage
Klasse ansehen, werden die Daten tatsächlich in der Registrierung gespeichert.Die Registrierung wird im Arbeitsspeicher gespeichert und erfolgt per HTTP-Anforderung, sodass Sie keine Daten zwischen verschiedenen Anforderungen oder Benutzern austauschen können.
quelle
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
quelle