Zend, Globale Variable in Application.ini?

8

Ich habe eine Frage, wie ich eine globale statische Variable haben muss und ich habe Frage ist irgendeine Möglichkeit, es zu der application.ini Datei hinzuzufügen, wie man es macht?

Oder ich muss:

  1. Erstellen Sie eine abstrakte Klasse mit der statischen Variable
  2. Registrieren Sie es in Zend_Registry, um Zugriff auf diese Variable von allen Anwendungen zu haben (Registrieren Sie sie in der Bootstrap-Datei)
  3. Ich kann es verwenden, oder es ist einfacher, ich meine "automatischen Weg", es zu tun?

Danke für den Rat! Regars,

    
canimbenim 13.02.2011, 18:51
quelle

6 Antworten

12

in der Datei Application.ini

%Vor%

im Bootstrap

%Vor%

aus Registry

ziehen %Vor%     
TuK 15.02.2011 03:12
quelle
6

Die beste Lösung für mich war, eine Variable in der Datei index.php zu erstellen. Ich habe hinzugefügt: definiert ('VARIABLE_NAME')     || definiere ('VARIABLE_NAME', 'Etwas hier');

Und jetzt kann ich von überall her darauf zugreifen; D Vielen Dank!

    
canimbenim 14.02.2011 21:54
quelle
5

Ich würde die Zend_Registry-Konstanten aus zwei Gründen nicht verwenden

  1. In der Registrierung sind Sie nie sicher, was mit den Variablen passiert ist. Jeder Teil der Anwendung kann sie ändern und Sie würden nicht bemerkt werden. Ich sehe die Registrierung tatsächlich als ein Anit-Muster.
  2. Konstanten verschmutzen Ihre Anwendung unnötig. Was ist, wenn Sie für jede Konfiguration eine Konstante verwenden? Sie müssen ein zusätzliches Dokument mit allen definierten Konstanten behalten, es ist schrecklich zu pflegen.

Die beste Option besteht darin, das config-Objekt direkt vom Bootstrap abzurufen. In den nächsten Beispielen gehe ich davon aus, dass Sie dies in Ihrer application.ini haben:

%Vor%

Der Bootstrap wird als Parameter im frontController eingestellt. Wenn Sie einen Action-Controller haben, macht es das so einfach:

%Vor%

Wenn Sie einen Dienst in Ihrem Controller instanziiert haben, können Sie ihn nun über den Konstruktor und / oder den Setter übergeben.

Wenn Sie die Optionen nicht innerhalb Ihres Controllers, sondern irgendwo anders erhalten möchten, können Sie das Singleton-Muster verwenden, das von FrontController implementiert wird. An jedem Ort (natürlich nur während des Versands, nicht während des Bootstraps selbst) können Sie dies tun:

%Vor%

Mit der obigen Methode sind Sie sicher, dass Sie immer die richtige Konfigurationsoption haben und nicht eine möglicherweise mutierte.

    
Jurian Sluiman 17.10.2011 09:09
quelle
1

Sie können einen Wert in der application.ini und in der Bootsrap.php angeben und in Zend_Registry speichern. Sie können auch PHP define Methode verwenden, um Konstanten zu erstellen (wenn Sie veriable ist konstant).

    
user594791 14.02.2011 03:11
quelle
0

Ich habe gerade define hinzugefügt ('VARIABLE_NAME', 'Etwas hier'); Bootstrap. Sofortige globale Konstanten.

Diese Konstanten wurden innerhalb einer geschützten _intiFuncName-Funktion innerhalb der Bootstrap-extends-Klasse platziert

    
user154107 07.01.2012 18:29
quelle
0

Ich habe eine Reihe von Konstanten mit der folgenden Namenskonvention in application.ini:

%Vor%

Und ich referenziere sie einfach in meinem Code, als wären sie PHP-Konstanten:

%Vor%     
Nicholas Kreidberg 27.06.2013 17:49
quelle