백엔드 개발 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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WIN10에서 레지스트리 프로세스를 닫는 작업 프로세스 WIN10에서 레지스트리 프로세스를 닫는 작업 프로세스 Mar 27, 2024 pm 05:51 PM

1. 키보드의 [Win+R] 단축키 조합을 길게 눌러 [실행] 대화상자 명령창을 열고, [services.msc] 명령을 입력한 후 [확인];을 클릭하세요. 2. 서비스 인터페이스를 연 후 [RemoteRegistry] 옵션을 찾아 왼쪽 버튼을 두 번 클릭하여 속성 대화 상자 창을 엽니다. 3. [원격 레지스트리 속성] 대화창이 열리면 시작 유형 옵션에서 [사용 안 함] 옵션을 선택한 후 [적용]--[중지]-[확인] 버튼을 클릭하여 설정을 저장합니다.

Zend Framework에서 권한 제어를 위해 ACL(Access Control List)을 사용하는 방법 Zend Framework에서 권한 제어를 위해 ACL(Access Control List)을 사용하는 방법 Jul 29, 2023 am 09:24 AM

Zend Framework에서 권한 제어를 위해 ACL(AccessControlList)을 사용하는 방법 소개: 웹 애플리케이션에서 권한 제어는 중요한 기능입니다. 이는 사용자가 액세스 권한이 있는 페이지와 기능에만 액세스할 수 있도록 하고 무단 액세스를 방지합니다. Zend 프레임워크는 ACL(AccessControlList) 구성 요소를 사용하여 권한 제어를 구현하는 편리한 방법을 제공합니다. 이 기사에서는 Zend Framework에서 ACL을 사용하는 방법을 소개합니다.

PHP 구현 프레임워크: Zend 프레임워크 시작 튜토리얼 PHP 구현 프레임워크: Zend 프레임워크 시작 튜토리얼 Jun 19, 2023 am 08:09 AM

PHP 구현 프레임워크: ZendFramework 입문 튜토리얼 ZendFramework는 PHP에서 개발하고 현재 ZendTechnologies에서 유지 관리하는 오픈 소스 웹 사이트 프레임워크입니다. ZendFramework는 MVC 디자인 패턴을 채택하고 Web2.0 애플리케이션 및 Web Serve 구현을 지원하기 위한 재사용 가능한 코드 라이브러리 시리즈를 제공합니다. 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 공식 웹사이트에 가서 다운로드해야 합니다. 그런 다음 아래와 같이 압축을 풀고 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(Enterprise Resource Planning) 관리 플랫폼은 기업이 자원 계획, 협업, 제어, 최적화 및 관리를 실현하는 데 도움이 되는 현대 기업 관리를 위한 중요한 도구입니다. 그 중 PHP 프레임워크 Zend는 개발자가 ERP 시스템을 빠르고 효율적으로 개발하는 데 도움을 줄 수 있는 탁월한 개발 도구입니다. 이 기사에서는 Zend를 사용하여 효율적인 ERP 관리 플랫폼을 개발하는 방법을 소개합니다. 1. 개발 프로세스를 시작하기 전에 요구사항 분석을 결정합니다.

Laravel vs Zend: 대규모 애플리케이션 개발에 어떤 프레임워크가 더 좋나요? Laravel vs Zend: 대규모 애플리케이션 개발에 어떤 프레임워크가 더 좋나요? Jun 19, 2023 am 08:52 AM

인터넷 애플리케이션이 지속적으로 발전함에 따라 대규모 애플리케이션 개발에 대한 요구도 증가하고 있습니다. 이러한 맥락에서 자신에게 적합한 개발 프레임워크를 선택하는 것이 특히 중요합니다. Laravel과 Zend는 널리 사용되는 두 가지 PHP 프레임워크입니다. 각각 고유한 장점이 있지만 대규모 애플리케이션 개발에 더 적합한 것은 무엇입니까? Laravel은 PHP 개발자가 선호하는 프레임워크 중 하나가 된 인기 있는 개발 프레임워크입니다. 현대적인 디자인 컨셉을 채택하고 EloquentOR과 같은 다양하고 강력한 내장 기능과 도구를 갖추고 있습니다.

See all articles