php教程 PHP开发 Zend Framework 튜토리얼 Zend_Registry 객체 사용 분석

Zend Framework 튜토리얼 Zend_Registry 객체 사용 분석

Dec 26, 2016 pm 03:35 PM

이 기사의 예에서는 Zend Framework 튜토리얼에서 Zend_Registry 개체의 사용법을 설명합니다. 참고하실 수 있도록 모두와 공유해 주세요. 자세한 내용은 다음과 같습니다.

객체 레지스트리(Registry) 사용

객체 레지스트리(또는 객체 웨어하우스)는 전체 애플리케이션 공간에서 사용되는 객체입니다. . 객체와 값을 저장하는 컨테이너입니다. 여기에 개체를 저장하면 프로젝트 전체 어디에서나 동일한 개체를 사용할 수 있습니다. 이 메커니즘은 전역 저장소와 동일합니다.

Zend_Registry 클래스의 정적 메서드를 통해 개체 레지스트리를 사용할 수 있습니다. 또한 이 클래스는 배열 개체이므로 배열 형식을 사용하여 클래스 메서드에 액세스할 수 있습니다.

1. 레지스트리에 값을 설정합니다.

레지스트리에 콘텐츠를 저장하려면 정적 메서드 set()을 사용할 수 있습니다.

예제 1. set() 사용 예:

Zend_Registry::set('index', $value);
로그인 후 복사

$value는 객체, 배열 또는 스칼라일 수 있습니다. set()을 다시 사용하여 레지스트리에 이미 있는 값으로 새 값을 설정할 수 있습니다.

인덱스 매개변수는 배열을 사용하는 것처럼 스칼라, 문자열 또는 정수일 수 있으며 배열의 인덱스/키 이름과 유사합니다.

2. 레지스트리에서 값 가져오기

get() 메서드를 사용하여 레지스트리에서 항목 값을 가져올 수 있습니다.

예 2. get() 메서드 예:

$value = Zend_Registry::get('index');
로그인 후 복사

getInstance()는 정적 레지스트리 개체를 반환합니다.
레지스트리 객체는 반복 가능합니다.

예 3. 레지스트리 개체 반복:

$registry = Zend_Registry::getInstance();
foreach ($registry as $index => $value) {
  echo "Registry index $index contains:/n";
  var_dump($value);
}
로그인 후 복사

3. 추가로 레지스트리 개체를 만듭니다.

using 정적 메서드를 사용하여 레지스트리 개체에 액세스하는 것 외에도 일반 개체를 사용하는 것처럼 직접 인스턴스화할 수 있습니다.

정적 메소드를 통해 레지스트리 객체의 인스턴스에 접근하면 정적 저장이 편리하고 프로그램 내 어디에서나 접근이 가능하다.

기존의 새로운 방법을 사용하여 레지스트리 인스턴스를 생성하는 경우 배열을 사용하여 레지스트리 내용을 초기화할 수 있습니다.

예제 4. 레지스트리 객체 생성

$registry = new Zend_Registry(array('index' => $value));
로그인 후 복사

이 객체 인스턴스를 생성한 후 배열 객체 메소드를 사용하여 사용할 수 있습니다. , 또는 정적 메소드 setInstance()를 통해 이 객체 인스턴스를 정적 ​​객체 인스턴스로 설정할 수 있습니다.

예 5. 정적 레지스트리 초기화 예

   
$registry = new Zend_Registry(array('index' => $value));
Zend_Registry::setInstance($registry);
로그인 후 복사

정적 레지스트리 객체가 초기화된 경우 setInstance() 메서드는 Zend_Exception 예외를 발생시킵니다.

4. 배열처럼 레지스트리 객체에 접근

한 번에 여러 값에 접근하거나 설정하고 싶다면 배열 방식을 사용하는 것이 매우 편리하다는 것을 알 수 있습니다.

예 6. 배열 메소드 액세스 예시:

$registry = Zend_Registry::getInstance();
$registry['index'] = $value;
var_dump( $registry['index'] );
로그인 후 복사

5. 객체 메소드 액세스 레지스트리

또한 개체의 속성 이름을 인덱스로 사용하여 개체 지향 스타일을 사용하여 레지스트리 개체에 액세스하는 것이 편리합니다. 이렇게 하려면 ArrayObject::ARRAY_AS_PROPS 옵션을 사용하여 레지스트리 개체를 생성하고 정적 인스턴스를 초기화해야 합니다. 정적 레지스트리에 처음으로 액세스하기 전에 이 작업을 수행해야 합니다. 이 옵션을 사용할 때 일부 PHP 버전에는 버그가 있으므로 이 옵션을 주의해야 합니다.

예 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. 확장 레지스트리 객체

정적 레지스트리 객체 Zend_Registry 클래스의 인스턴스입니다. 여기에 기능을 추가하려면 Zend_Registry 클래스를 상속한 다음 이 클래스를 사용하여 개체 레지스트리에 액세스하도록 지정할 수 있습니다. 정적 메소드 setClassName()을 사용하여 사용할 클래스를 지정할 수 있습니다. 이 클래스는 Zend_Registry의 하위 클래스여야 합니다.

예 10. 정적 레지스트리의 클래스 이름 지정:

Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);
로그인 후 복사

레지스트리가 완료된 후 이를 설정하려고 하면 클래스 이름에 액세스하면 레지스트리에서 예외가 발생합니다. 부스트랩 코드(예: index.php)에서 이 클래스 이름을 설정하는 것이 좋습니다.

8. 정적 레지스트리 삭제

필수는 아니지만 _unsetInstance() 메서드를 사용하여 레지스트리의 정적 인스턴스를 삭제할 수 있습니다.

[참고] 데이터 손실 위험

_unsetInstance()를 사용하면 정적 레지스트리의 모든 데이터가 손실되며 복구할 수 없습니다.

가끔 _unsetInstance() 메서드가 필요할 수도 있습니다. 예를 들어, 레지스트리 객체가 초기화된 후 setInstance() 또는 setClassName()을 사용하려는 경우 해당 메서드를 사용하기 전에 _unsetInstance()를 사용하여 정적 인스턴스를 삭제할 수 있습니다.

예제 11. _unsetInstance() 예:

Zend_Registry::set('index', $value);
Zend_Registry::_unsetInstance();
// 改变我们要使用的类
Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);
로그인 후 복사

도움이 되었습니다.

Zend Framework 튜토리얼 Zend_Registry 객체 사용 분석 관련 기사를 더 보려면 PHP 중국어 웹사이트를 주목하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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