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

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

高洛峰
풀어 주다: 2016-12-26 15:35:15
원래의
1097명이 탐색했습니다.

이 기사의 예에서는 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 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿