ホームページ バックエンド開発 PHPチュートリアル Zend的Registry机制的使用说明_php实例

Zend的Registry机制的使用说明_php实例

May 17, 2016 am 09:05 AM
registry zend

项目过程中有很多全局变量, 需要全局存储,是否是使用全局变量来进行存储?那就弱爆了。Zend使用Registry机制(注册表)存储对象和值,是一个存储对象和值的容器。

Zend_Registry这个类就是做这个目的

代码示例
Zend_Registry::set('config', $config);
Zend_Registry::get('config');

代码分析
这两个函数是最常用的两个函数。我们来看一下这个类

class Zend_Registry extends ArrayObject

这个类继承自ArrayObject

ArrayObject implements IteratorAggregate , Traversable , ArrayAccess , Serializable , Countable

ArrayObject是一个对象集合,相当于其他语言的泛型集合的概念。

重点了解下void ArrayObject::offsetSet ( mixed $index , mixed $newval ), 这个函数就是hashtable中的设置key,value,只是key,value可以是任何类型的。

好了,回到Zend_Registry, 看看set做了些什么事情

set函数

复制代码 代码如下:

public static function set($index, $value)
    {
        $instance = self::getInstance();
        $instance->offsetSet($index, $value);

    }


一个是实例化Register,另一个是调用offsetSet方法,将index和value设置进去。

offset方法很好理解,但是为什么要使用getInstance方法呢?

这里建议大家好好看看,这个是结合类静态方法的单例模式。

我们一般的单例模式写成:

复制代码 代码如下:

class A{
    private $_instance;
    public static function getInstance(){
        ...
    }

    protected function __construct(){
        ...
    }

    public function setVal(){
        ...
    }
}

$a = A::getInstance();

$a->setVal();

这样在调用之前就需要实例化一个类,虽然这个实例化实际上是单例,但感觉还是不舒服

这边的register就做到了直接使用静态方法调用

A::setVal();

大致的代码思路我写了个demo

复制代码 代码如下:

class A{
    private static $_instance;
    public static function getInstance(){
        if(self::_instance !==null){
            return $this->_instance;
        } else {
            return new A();
        }
    }

    public function __construct(){

    }

    public static function setV(){
        $a = self::getInstance();
        $a->setVal();
    }

    public function setVal(){
        ...
    }
}

A::setV();

实际上就是直接把__construct()放开成为public,然后实例化它
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WIN10でレジストリプロセスを閉じる操作手順 WIN10でレジストリプロセスを閉じる操作手順 Mar 27, 2024 pm 05:51 PM

1. キーボードの [Win+R] ショートカット キーの組み合わせを押したままにして、[ファイル名を指定して実行] ダイアログ コマンド ウィンドウを開き、[services.msc] コマンドを入力して、[OK] をクリックします。 2. サービス インターフェイスを開いた後、[RemoteRegistry] オプションを見つけ、左ボタンでダブルクリックしてプロパティ ダイアログ ウィンドウを開きます。 3. 表示される[RemoteRegistryのプロパティ]ダイアログウィンドウで、スタートアップの種類オプションで[無​​効]オプションを選択し、[適用]--[停止]--[OK]ボタンをクリックして設定を保存します。

Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Jul 29, 2023 am 09:24 AM

Zend Framework でのアクセス許可制御に ACL (AccessControlList) を使用する方法 はじめに: Web アプリケーションでは、アクセス許可制御は重要な機能です。これにより、ユーザーはアクセスを許可されたページと機能にのみアクセスできるようになり、不正アクセスが防止されます。 Zend フレームワークは、ACL (AccessControlList) コンポーネントを使用してアクセス許可制御を実装する便利な方法を提供します。この記事では、Zend Framework で ACL を使用する方法を紹介します。

PHP 実装フレームワーク: Zend Framework 入門チュートリアル PHP 実装フレームワーク: Zend Framework 入門チュートリアル Jun 19, 2023 am 08:09 AM

PHP 実装フレームワーク: ZendFramework 入門チュートリアル ZendFramework は、PHP によって開発されたオープン ソースの Web サイト フレームワークであり、現在 ZendTechnologies によって保守されています。ZendFramework は、MVC デザイン パターンを採用し、Web2.0 アプリケーションと Web サーブの実装に役立つ一連の再利用可能なコード ライブラリを提供します。 。 ZendFramework は PHP 開発者に非常に人気があり、尊敬されており、幅広い機能を備えています。

PHP が ZendOptimizer を認識しないのですが、どうすれば解決できますか? PHP が ZendOptimizer を認識しないのですが、どうすれば解決できますか? Mar 19, 2024 pm 01:09 PM

PHP が ZendOptimizer を認識しないのですが、どうすれば解決できますか? PHP 開発では、PHP が ZendOptimizer を認識できない状況が発生し、一部の PHP コードが正しく実行されなくなることがあります。この場合、問題を解決するために何らかの措置を講じる必要があります。考えられるいくつかの回避策を、具体的なコード例とともに以下に説明します。 1. ZendOptimizer が正しくインストールされているかどうかを確認します。まず、ZendOptimizer が正しくインストールされていることを確認する必要があります。

Window2003 IIS+MySQL+PHP+Zend 環境の設定方法 Window2003 IIS+MySQL+PHP+Zend 環境の設定方法 Jun 02, 2023 pm 09:56 PM

Windows 2003 インストール パッケージには、Zend、PHP5.2.17、PHPWind8.7、および PHPMyadmin3.5.2 が含まれています。インストール パッケージを直接ダウンロードして、リソースを検索する時間を節約できます。ただし、MySQL はアップロード制限を超えているため、MySQL 公式 Web サイトにアクセスしてダウンロードする必要があります。次に、以下に示すように、解凍して D ドライブにコピーします。 MySQLinDdisk WindowsIIS+FTP をインストールして構成します。 [スタート] > [コントロール パネル] > [プログラムの追加と削除] をクリックします。 PG の追加または削除 [Windows コンポーネントの追加と削除] (A) をクリックします。追加する

レジストリとはどのようなプログラムですか? レジストリとはどのようなプログラムですか? Feb 24, 2023 pm 05:21 PM

レジストリとは「レジストリエディタ」を指し、システムプログラムのことです。レジストリは、Microsoft Windows システムの重要なデータベースです。ユーザーのコンピュータ ソフトウェアとハ​​ードウェアに関する構成情報やステータス情報、アプリケーションとリソース マネージャ シェルの初期条件など、システムとアプリケーションの設定情報を保存するために使用されます。アンインストール データ、コンピュータのシステム全体の設定とさまざまなアクセス許可、ファイル拡張子のアプリケーションとの関連付け、ハードウェアの説明、ステータス、プロパティなど。

PHP フレームワーク Zend を使用して効率的な ERP 管理プラットフォームを開発する方法 PHP フレームワーク Zend を使用して効率的な ERP 管理プラットフォームを開発する方法 Jun 26, 2023 pm 11:00 PM

情報技術の急速な発展に伴い、情報管理の必要性を認識する企業が増えています。 ERP (エンタープライズ リソース プランニング) 管理プラットフォームは、現代の企業管理にとって重要なツールであり、企業がリソース プランニング、コラボレーション、制御、最適化、および管理を実現するのに役立ちます。中でも、PHP フレームワーク Zend は、開発者が ERP システムを迅速かつ効率的に開発するのに役立つ優れた開発ツールです。この記事では、Zend を使用して効率的な ERP 管理プラットフォームを開発する方法を紹介します。 1. 開発プロセスを開始する前に要件分析を決定する

Laravel と Zend: 大規模なアプリケーションの開発にはどちらのフレームワークが適していますか? Laravel と Zend: 大規模なアプリケーションの開発にはどちらのフレームワークが適していますか? Jun 19, 2023 am 08:52 AM

インターネット アプリケーションの継続的な開発に伴い、大規模なアプリケーション開発の需要も増加しています。この文脈では、自分に合った開発フレームワークを選択することが特に重要です。 Laravel と Zend は広く使用されている PHP フレームワークで、それぞれに独自の利点がありますが、大規模なアプリケーションの開発にはどちらが適しているでしょうか。 Laravel は人気のある開発フレームワークであり、PHP 開発者にとって推奨されるフレームワークの 1 つとなっています。モダンなデザインコンセプトを採用しており、EloquentORなどのさまざまな強力な組み込み機能とツールを備えています。

See all articles