Heim > php教程 > PHP开发 > Zend Framework-Tutorial zur Analyse der Zend_Registry-Objektnutzung

Zend Framework-Tutorial zur Analyse der Zend_Registry-Objektnutzung

高洛峰
Freigeben: 2016-12-26 15:35:15
Original
1086 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die Verwendung des Zend_Registry-Objekts im Zend Framework-Tutorial. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Verwenden der Objektregistrierung (Registrierung)

Die Objektregistrierung (oder das Objektlager) ist ein Objekt, das im gesamten Anwendungsbereich verwendet wird . Ein Container zum Speichern von Objekten und Werten. Indem wir Objekte darin speichern, können wir dasselbe Objekt überall im Projekt verwenden. Dieser Mechanismus entspricht einem globalen Speicher.

Wir können die Objektregistrierung über die statischen Methoden der Zend_Registry-Klasse verwenden. Da es sich bei dieser Klasse außerdem um ein Array-Objekt handelt, können Sie die Array-Form verwenden, um auf die Klassenmethoden zuzugreifen.

1. Legen Sie den Wert in der Registrierung fest

Um einen Inhalt in der Registrierung zu speichern, können wir die statische Methode set() verwenden.

Beispiel 1. Beispiel für die Verwendung von set():

Zend_Registry::set('index', $value);
Nach dem Login kopieren

$value kann ein Objekt, ein Array oder ein Skalar sein. Sie können set() erneut verwenden, um einen neuen Wert auf einen bereits in der Registrierung vorhandenen Wert zu setzen.

Der Indexparameter kann ein Skalar, eine Zeichenfolge oder eine Ganzzahl sein, genau wie bei der Verwendung eines Arrays, ähnlich dem Index-/Schlüsselnamen des Arrays.

2. Den Wert in der Registrierung abrufen

Sie können die Methode get() verwenden, um den Wert eines Elements in der Registrierung abzurufen.

Beispiel 2. Beispiel für die get()-Methode:

$value = Zend_Registry::get('index');
Nach dem Login kopieren

getInstance() gibt ein statisches Registrierungsobjekt zurück.
Registrierungsobjekte sind iterierbar.

Beispiel 3. Iterieren Sie ein Registrierungsobjekt:

$registry = Zend_Registry::getInstance();
foreach ($registry as $index => $value) {
  echo "Registry index $index contains:/n";
  var_dump($value);
}
Nach dem Login kopieren

3. Erstellen Sie ein Registrierungsobjekt

Zusätzlich zu Verwenden von Zusätzlich zu statischen Methoden für den Zugriff auf das Registrierungsobjekt können Sie es direkt instanziieren, genau wie bei der Verwendung eines normalen Objekts.

Wenn Sie über eine statische Methode auf eine Instanz eines Registrierungsobjekts zugreifen, eignet sich dies für die statische Speicherung und Sie können überall im Programm darauf zugreifen.

Wenn Sie die traditionelle neue Methode zum Erstellen einer Instanz der Registrierung verwenden, können Sie ein Array verwenden, um den Inhalt der Registrierung zu initialisieren.

Beispiel 4. Erstellen Sie ein Registrierungsobjekt

$registry = new Zend_Registry(array('index' => $value));
Nach dem Login kopieren

Nachdem Sie diese Objektinstanz erstellt haben, können Sie sie mit der Array-Objektmethode verwenden , oder Sie können diese Objektinstanz über die statische Methode setInstance() auf eine statische Objektinstanz festlegen.

Beispiel 5. Beispiel für die Initialisierung der statischen Registrierung

   
$registry = new Zend_Registry(array('index' => $value));
Zend_Registry::setInstance($registry);
Nach dem Login kopieren

Wenn das statische Registrierungsobjekt initialisiert wurde, wird die Methode setInstance( ) initialisiert eine Zend_Exception-Ausnahme auslösen.

4. Greifen Sie wie ein Array auf das Registrierungsobjekt zu.

Wenn Sie auf mehrere Werte gleichzeitig zugreifen oder diese festlegen möchten, ist die Verwendung der Array-Methode sehr praktisch.

Beispiel 6. Beispiel für den Array-Methodenzugriff:

$registry = Zend_Registry::getInstance();
$registry['index'] = $value;
var_dump( $registry['index'] );
Nach dem Login kopieren

5. Objektmethodenzugriffsregistrierung

Sie finden Es ist auch praktisch, über einen objektorientierten Stil auf Registrierungsobjekte zuzugreifen, indem die Eigenschaftsnamen in den Objekten als Indizes verwendet werden. Dazu müssen Sie das Registrierungsobjekt mit der Option ArrayObject::ARRAY_AS_PROPS erstellen und die statische Instanz initialisieren. Sie müssen dies tun, bevor zum ersten Mal auf die statische Registrierung zugegriffen wird. Seien Sie vorsichtig mit dieser Option, da einige PHP-Versionen bei der Verwendung dieser Option Fehler aufweisen.

Beispiel 7. Zugriff in Objektform:

//在你的bootstrap代码中:
$registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS)
Zend_Registry::setInstance($registry);
$registry->tree = 'apple';
.
.
.
//在程序的任何其它地方:
$registry = Zend_Registry::getInstance();
echo $registry->tree; // echo's "apple"
$registry->index = $value;
var_dump($registry->index);
Nach dem Login kopieren

6. Abfrage, ob ein Index vorhanden ist

Verwendet Die statische Methode isRegistered() fragt ab, ob für einen bestimmten Index ein entsprechender Wertesatz vorhanden ist.

Beispiel 8. isRegistered() Beispiel:

if (Zend_Registry::isRegistered($index)) {
  $value = Zend_Registry::get($index);
}
Nach dem Login kopieren

Um zu bestimmen, ob der Wert eines bestimmten Index in einem Array-Objekt festgelegt ist Definiert können Sie die Funktion isset() wie ein gewöhnliches Array verwenden.

Beispiel 9. isset() Beispiel:

$registry = Zend_Registry::getInstance();
// using array-access syntax
if (isset($registry['index'])) {
  var_dump( $registry['index'] );
}
// using object-access syntax, if enabled
if (isset($registry->index)) {
  var_dump( $registry->index );
}
Nach dem Login kopieren

7. Das statische Registrierungsobjekt ist eine Instanz der Klasse Zend_Registry. Wenn Sie Funktionalität hinzufügen möchten, können Sie die Zend_Registry-Klasse erben und dann angeben, dass diese Klasse für den Zugriff auf die Objektregistrierung verwendet werden soll. Sie können die statische Methode setClassName() verwenden, um die zu verwendende Klasse anzugeben. Beachten Sie, dass diese Klasse eine Unterklasse von Zend_Registry sein muss.

Beispiel 10. Geben Sie den Klassennamen der statischen Registrierung an:

Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);
Nach dem Login kopieren

Wenn Sie versuchen, dies festzulegen, nachdem die Registrierung erstellt wurde Wenn auf den Klassennamen zugegriffen wird, löst die Registrierung eine Ausnahme aus. Es wird empfohlen, diesen Klassennamen im Boostrap-Code festzulegen (z. B. index.php).

8. Löschen Sie die statische Registrierung

Obwohl dies nicht erforderlich ist, können Sie die statische Instanz der Registrierung mit der Methode _unsetInstance() löschen.

[Hinweis] Risiko eines Datenverlusts

Bei Verwendung von _unsetInstance() gehen alle Daten in der statischen Registrierung verloren und können nicht wiederhergestellt werden.

Manchmal benötigen Sie möglicherweise die Methode _unsetInstance(). Wenn Sie beispielsweise setInstance() oder setClassName() verwenden möchten, nachdem das Registrierungsobjekt initialisiert wurde, können Sie _unsetInstance() verwenden, um die statische Instanz zu löschen, bevor Sie diese Methoden verwenden.

Beispiel 11. _unsetInstance() Beispiel:

hat geholfen.
Zend_Registry::set('index', $value);
Zend_Registry::_unsetInstance();
// 改变我们要使用的类
Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);
Nach dem Login kopieren

Weitere Artikel zum Zend Framework-Tutorial zur Zend_Registry-Objektnutzungsanalyse finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage