Zend Framework教程之Zend_Registry对象用法分析_php实例
本文实例讲述了Zend Framework教程之Zend_Registry对象用法。分享给大家供大家参考,具体如下:
使用对象注册表(Registry)
对象注册表(或称对象仓库)是一个用于在整个应用空间(application space)内存储对象和值的容器。通过把对象存储在其中,我们可以在整个项目的任何地方使用同一个对象。这种机制相当于一种全局存储。
我们可以通过Zend_Registry类的静态方法来使用对象注册表,另外,由于该类是一个数组对象,你可以使用数组形式来访问其中的类方法。
1. 设置Registry中的值
要保存一项内容到注册表中,我们可以使用静态方法 set()。
例 1. set() 使用示例:
Zend_Registry::set('index', $value);
$value可以是一个对象、数组或者标量。你可以再次使用set()来为注册表中已有的值设置一个新值。
index参数可以是一个标量,即字符串或整数,就像使用数组一样,类似于数组的索引/键名。
2. 获取Registry中的值
可以使用 get()方法来获取Registry中某项内容的值。
例 2. get() 方法示例:
$value = Zend_Registry::get('index');
getInstance()返回静态registry对象。
registry对象是可迭代的(iterable)。
例 3. 迭代一个registry对象:
$registry = Zend_Registry::getInstance(); foreach ($registry as $index => $value) { echo "Registry index $index contains:/n"; var_dump($value); }
3. 创建一个Registry对象
除了可以使用静态方法来访问Registry对象之外,你可以直接实例化它,就像使用普通的对象一样。
如果通过静态方法来访问registry对象的实例,它很方便进行静态存储,你可以在程序中的任何地方访问它。
如果使用传统的new 方法来创建registry的实例,则你可以使用数组一样的方式来初始化registry中的内容。
例 4. 创建一个registry对象
$registry = new Zend_Registry(array('index' => $value));
在创建这个对象实例之后,你可以使用数组对象方法来使用它,或者你可以把这个对象实例通过静态方法setInstance()设置为静态对象实例。
例 5. Example of initializing the static registry
$registry = new Zend_Registry(array('index' => $value)); Zend_Registry::setInstance($registry);
如果静态的注册表对象已经被初始化过,则setInstance()方法会抛出一个Zend_Exception异常。
4. 像访问数组一样访问Registry对象
如果你要一次访问或设置多个值,你会发现使用数组方式是很方便的。
例 6. array 方式访问示例:
$registry = Zend_Registry::getInstance(); $registry['index'] = $value; var_dump( $registry['index'] );
5. 对象方式访问Registry
你会发现使用面向对象风格来访问registry对象也是方便的,对象中的属性名称作为索引。 要这样做,你需要使用ArrayObject::ARRAY_AS_PROPS选项来创建registry对象,并初始化静态实例。你要在静态的registry被第一次访问之前就完成这个工作。小心使用这个选项,因为某些版本的PHP在使用这个选项时会有bug。
例 7. 对象形式的访问:
//在你的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);
6. 查询一个索引是否存在
可以使用静态方法isRegistered()来查询是否某个特定的索引已经设置了相应的值。
例 8. isRegistered() 示例:
if (Zend_Registry::isRegistered($index)) { $value = Zend_Registry::get($index); }
要确定一个数组对象中的某个特定索引的值是否设定,可以使用isset()函数,就像在普通的数组中那样使用。
例 9. isset() 示例:
$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 ); }
7. 扩展Registry对象
静态registry对象是类Zend_Registry的一个实例。如果你想给它增加功能,你可以继承Zend_Registry类,然后指定使用这个类来访问对象注册表。你可以使用静态方法setClassName()来指定使用这个类。注意这个类一定要是Zend_Registry的子类。
例 10. 指定静态注册表的类名:
Zend_Registry::setClassName('My_Registry'); Zend_Registry::set('index', $value);
如果你在registry已经被访问过后尝试设定该类名,则registry抛出一个异常。建议你在boostrap代码(即index.php)中设置该类名。
8. 删除静态注册表
尽管这不是必需的,你可以使用_unsetInstance()方法来删除registry的静态实例。
[注意] 数据丢失的风险
在使用_unsetInstance()的时候,静态注册表中的所有数据都会丢失并且无法恢复。
有时你可能需要_unsetInstance()这个方法。例如你想在已经初始化过registry对象之后,再使用setInstance()或 setClassName(),那么你可以使用_unsetInstance()先把静态实例删除了,然后才能使用那些方法。
例 11. _unsetInstance() 示例:
Zend_Registry::set('index', $value); Zend_Registry::_unsetInstance(); // 改变我们要使用的类 Zend_Registry::setClassName('My_Registry'); Zend_Registry::set('index', $value);
更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

.NET Framework 4 est requis par les développeurs et les utilisateurs finaux pour exécuter les dernières versions des applications sous Windows. Cependant, lors du téléchargement et de l'installation de .NET Framework 4, de nombreux utilisateurs se sont plaints de l'arrêt du programme d'installation à mi-chemin, affichant le message d'erreur suivant : « .NET Framework 4 n'a pas été installé car le téléchargement a échoué avec le code d'erreur 0x800c0006 ». Si vous le rencontrez également lors de l'installation de .NETFramework4 sur votre appareil, vous êtes au bon endroit

Chaque fois que votre PC Windows 11 ou Windows 10 rencontre un problème de mise à niveau ou de mise à jour, vous verrez généralement un code d'erreur indiquant la raison réelle de l'échec. Cependant, une confusion peut parfois survenir lorsqu'une mise à niveau ou une mise à jour échoue sans qu'un code d'erreur ne s'affiche. Grâce à des codes d'erreur pratiques, vous savez exactement où se situe le problème afin que vous puissiez essayer de le résoudre. Mais comme aucun code d’erreur n’apparaît, il devient difficile d’identifier le problème et de le résoudre. Cela prendra beaucoup de temps pour simplement découvrir la raison de l'erreur. Dans ce cas, vous pouvez essayer d'utiliser un outil dédié appelé SetupDiag fourni par Microsoft qui vous aide à identifier facilement la véritable raison de l'erreur.
![SCNotification a cessé de fonctionner [5 étapes pour y remédier]](https://img.php.cn/upload/article/000/887/227/168433050522031.png?x-oss-process=image/resize,m_fill,h_207,w_330)
En tant qu'utilisateur Windows, vous rencontrerez probablement une erreur SCNotification a cessé de fonctionner à chaque démarrage de votre ordinateur. SCNotification.exe est un fichier de notification système Microsoft qui plante à chaque démarrage de votre PC en raison d'erreurs d'autorisation et de pannes de réseau. Cette erreur est également connue sous son nom d’événement problématique. Vous ne verrez donc peut-être pas cela comme un arrêt de SCNotification, mais comme un bug clr20r3. Dans cet article, nous explorerons toutes les étapes à suivre pour réparer SCNotification a cessé de fonctionner afin qu'il ne vous dérange plus. Qu'est-ce que SCNotification.e

Les utilisateurs de Microsoft Windows qui ont installé Microsoft.NET version 4.5.2, 4.6 ou 4.6.1 doivent installer une version plus récente de Microsoft Framework s'ils souhaitent que Microsoft prenne en charge le framework via de futures mises à jour de produit. Selon Microsoft, les trois frameworks cesseront de prendre en charge le 26 avril 2022. Une fois la date de support terminée, le produit ne recevra plus de « correctifs de sécurité ni de support technique ». La plupart des appareils domestiques sont tenus à jour grâce aux mises à jour Windows. Ces appareils disposent déjà de versions plus récentes de frameworks, telles que .NET Framework 4.8. Les appareils qui ne se mettent pas à jour automatiquement peuvent

Cela fait une semaine que nous parlions du nouveau bug du mode sans échec affectant les utilisateurs ayant installé KB5012643 pour Windows 11. Ce problème embêtant n'apparaissait pas sur la liste des problèmes connus publiée par Microsoft le jour du lancement, prenant ainsi tout le monde par surprise. Eh bien, juste au moment où vous pensiez que les choses ne pourraient pas empirer, Microsoft lâche une autre bombe pour les utilisateurs qui ont installé cette mise à jour cumulative. Windows 11 Build 22000.652 pose davantage de problèmes. La société de technologie avertit donc les utilisateurs de Windows 11 qu'ils pourraient rencontrer des problèmes lors du lancement et de l'utilisation de certaines applications .NET Framework 3.5. Cela vous semble familier ? Mais s'il te plaît, ne sois pas surpris

Framework d'implémentation PHP : tutoriel d'introduction à ZendFramework ZendFramework est un framework de site Web open source développé par PHP et actuellement maintenu par ZendTechnologies. ZendFramework adopte le modèle de conception MVC et fournit une série de bibliothèques de code réutilisables pour servir l'implémentation d'applications Web2.0 et Web Serve. ZendFramework est très populaire et respecté par les développeurs PHP et propose une large gamme de

Comment utiliser l'ACL (AccessControlList) pour le contrôle des autorisations dans Zend Framework Introduction : Dans une application Web, le contrôle des autorisations est une fonction cruciale. Il garantit que les utilisateurs ne peuvent accéder qu'aux pages et fonctionnalités auxquelles ils sont autorisés à accéder et empêche tout accès non autorisé. Le framework Zend fournit un moyen pratique d'implémenter le contrôle des autorisations, en utilisant le composant ACL (AccessControlList). Cet article explique comment utiliser l'ACL dans Zend Framework.

Selon les informations du 9 décembre, Cooler Master a récemment présenté un mini kit de châssis en coopération avec le fournisseur de solutions modulaires pour ordinateurs portables Framework lors d'un événement de démonstration au Taipei Compute Show. La particularité de ce kit est qu'il peut être compatible et installer la carte mère. à partir du cahier-cadre. Actuellement, ce produit a commencé à être vendu sur le marché, au prix de 39 dollars américains, ce qui équivaut à environ 279 yuans au taux de change actuel. Le numéro de modèle de ce kit de châssis est nommé « frameWORKMAINBOARDCASE ». En termes de design, il incarne le summum de la compacité et de la praticité, mesurant seulement 297x133x15 mm. Sa conception originale est de pouvoir se connecter de manière transparente aux notebooks framework
