Zend 의 Registry 메커니즘 사용 설명
Zend_레 지 스 트 리 이런 거 하 는 거 예요.
코드 예시 ZendRegistry::set('config', $config); Zend_Registry::get('config');
코드 분석 이 두 함 수 는 가장 자주 사용 하 는 두 함수 이다.이런 거 한번 볼 게 요.
class Zend_Registry extends ArrayObject
이 종 류 는 Array Object 에서 계승 합 니 다.
ArrayObject implements IteratorAggregate , Traversable , ArrayAccess , Serializable , Countable
Array Object 는 하나의 대상 집합 으로 다른 언어의 범용 집합 에 해당 하 는 개념 이다.
void Array Object::offsetSet(mixed$index,mixed$newval)에 중점 을 두 고 알 아 보 세 요.이 함 수 는 hashtable 의 설정 key,value 입 니 다.key 일 뿐,value 는 모든 유형 일 수 있 습 니 다.
자,젠 드 로 돌아 가자레 지 스 트 리,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 로 놓 고 예화 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Zend_ControllerZend_Controller_Front 는 플러그 인 에이전트 (plugin broker) 를 스스로 등록 하여 플러그 인 이 촉발 하 는 각종 사건 을 관찰 할 수 있 도록 합 니 다.대부분의 경우 개발 자 들 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.