Maison > php教程 > PHP开发 > Tutoriel Zend Framework Analyse de l'utilisation des objets Zend_Registry

Tutoriel Zend Framework Analyse de l'utilisation des objets Zend_Registry

高洛峰
Libérer: 2016-12-26 15:35:15
original
1096 Les gens l'ont consulté

L'exemple de cet article décrit l'utilisation de l'objet Zend_Registry dans le tutoriel Zend Framework. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Utilisation du registre d'objets (registre)

Le registre d'objets (ou entrepôt d'objets) est un objet utilisé dans tout l'espace d'application . Un conteneur pour stocker des objets et des valeurs. En y stockant des objets, nous pouvons utiliser le même objet n'importe où tout au long du projet. Ce mécanisme équivaut à un stockage global.

Nous pouvons utiliser le registre d'objets via les méthodes statiques de la classe Zend_Registry. De plus, puisque cette classe est un objet tableau, vous pouvez utiliser le formulaire tableau pour accéder aux méthodes de classe.

1. Définissez la valeur dans le registre

Pour enregistrer un contenu dans le registre, nous pouvons utiliser la méthode statique set().

Exemple 1. Exemple d'utilisation de set() :

Zend_Registry::set('index', $value);
Copier après la connexion

$value peut être un objet, un tableau ou un scalaire. Vous pouvez utiliser à nouveau set() pour définir une nouvelle valeur sur une valeur existante dans le registre.

Le paramètre index peut être un scalaire, une chaîne ou un entier, tout comme l'utilisation d'un tableau, similaire au nom d'index/clé du tableau.

2. Obtenez la valeur dans le registre

Vous pouvez utiliser la méthode get() pour obtenir la valeur d'un élément dans le registre.

Exemple 2. Exemple de méthode get() :

$value = Zend_Registry::get('index');
Copier après la connexion

getInstance() renvoie un objet de registre statique.
Les objets du registre sont itérables.

Exemple 3. Itérer un objet de registre :

$registry = Zend_Registry::getInstance();
foreach ($registry as $index => $value) {
  echo "Registry index $index contains:/n";
  var_dump($value);
}
Copier après la connexion

3. Créer un objet de registre

En plus de using En plus des méthodes statiques pour accéder à l'objet Registry, vous pouvez l'instancier directement, tout comme si vous utilisiez un objet normal.

Si vous accédez à l'instance de l'objet de registre via une méthode statique, cela est pratique pour le stockage statique et vous pouvez y accéder n'importe où dans le programme.

Si vous utilisez la nouvelle méthode traditionnelle pour créer une instance du registre, vous pouvez utiliser un tableau pour initialiser le contenu du registre.

Exemple 4. Créer un objet de registre

$registry = new Zend_Registry(array('index' => $value));
Copier après la connexion

Après avoir créé cette instance d'objet, vous pouvez utiliser la méthode d'objet tableau pour l'utiliser , ou vous pouvez définir cette instance d'objet sur une instance d'objet statique via la méthode statique setInstance().

Exemple 5. Exemple d'initialisation du registre statique

   
$registry = new Zend_Registry(array('index' => $value));
Zend_Registry::setInstance($registry);
Copier après la connexion

Si l'objet de registre statique a été initialisé, la méthode setInstance() le fera lancer une exception Zend_Exception.

4. Accédez à l'objet Registre comme un tableau

Si vous souhaitez accéder ou définir plusieurs valeurs à la fois, vous constaterez que l'utilisation de la méthode tableau est très pratique.

Exemple 6. Exemple d'accès à la méthode tableau :

$registry = Zend_Registry::getInstance();
$registry['index'] = $value;
var_dump( $registry['index'] );
Copier après la connexion

5. Il est également pratique d'accéder aux objets du registre à l'aide d'un style orienté objet, en utilisant les noms de propriétés des objets comme index. Pour ce faire, vous devez créer l'objet de registre à l'aide de l'option ArrayObject::ARRAY_AS_PROPS et initialiser l'instance statique. Vous devez le faire avant le premier accès au registre statique. Soyez prudent avec cette option, car certaines versions de PHP présentent des bugs lors de l'utilisation de cette option.

Exemple 7. Accès sous forme d'objet :

//在你的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);
Copier après la connexion

6. Demander si un index existe

peut être used La méthode statique isRegistered() demande si un index spécifique a un ensemble de valeurs correspondant.

Exemple 8. isRegistered() Exemple :

if (Zend_Registry::isRegistered($index)) {
  $value = Zend_Registry::get($index);
}
Copier après la connexion

Pour déterminer si la valeur d'un index spécifique dans un objet tableau est définie Défini, vous pouvez utiliser la fonction isset() comme vous le feriez avec un tableau ordinaire.

Exemple 9. isset() Exemple :

$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 );
}
Copier après la connexion

7. Objet de registre étendu

L'objet de registre statique est une instance de la classe Zend_Registry. Si vous souhaitez y ajouter des fonctionnalités, vous pouvez hériter de la classe Zend_Registry puis spécifier d'utiliser cette classe pour accéder au registre d'objets. Vous pouvez utiliser la méthode statique setClassName() pour spécifier la classe à utiliser. Notez que cette classe doit être une sous-classe de Zend_Registry.

Exemple 10. Spécifiez le nom de classe du registre statique :

Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);
Copier après la connexion

Si vous essayez de le définir après que le registre a été nom de classe accédé, le registre lève une exception. Il est recommandé de définir ce nom de classe dans le code boostrap (c'est-à-dire index.php).

8. Supprimez le registre statique

Bien que cela ne soit pas obligatoire, vous pouvez utiliser la méthode _unsetInstance() pour supprimer l'instance statique du registre.

[Note] Risque de perte de données

Lors de l'utilisation de _unsetInstance(), toutes les données du registre statique seront perdues et ne pourront pas être récupérées.

Parfois, vous aurez peut-être besoin de la méthode _unsetInstance(). Par exemple, si vous souhaitez utiliser setInstance() ou setClassName() après l'initialisation de l'objet de registre, vous pouvez utiliser _unsetInstance() pour supprimer l'instance statique avant d'utiliser ces méthodes.

Exemple 11. _unsetInstance() Exemple :

aidé.
Zend_Registry::set('index', $value);
Zend_Registry::_unsetInstance();
// 改变我们要使用的类
Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);
Copier après la connexion

Pour plus d'articles sur l'analyse de l'utilisation des objets Zend Framework Zend_Registry, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal