>백엔드 개발 >PHP 튜토리얼 >PHP 인터셉터 예제 분석_php 기술

PHP 인터셉터 예제 분석_php 기술

WBOY
WBOY원래의
2016-05-16 20:33:121162검색

이 기사의 예에서는 PHP 인터셉터의 사용을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

PHP는 아래와 같이 정의되지 않은 메서드와 속성에 액세스할 때 호출되는 여러 인터셉터를 제공합니다.

1.__get($속성)
기능: 정의되지 않은 속성에 액세스하는 것을

이라고 합니다.

2. __set($속성, $값)
함수: 정의되지 않은 속성에 대한 값을 설정할 때 호출됩니다

3. __isset($속성)
함수: 정의되지 않은 속성에 대해 isset()이 호출될 때 호출됩니다.

4.__unset($속성)
함수: 정의되지 않은 속성에 대해 unset()이 호출될 때 호출됩니다.

5. __call($메소드, $arg_array)
함수: 정의되지 않은 메소드를 호출할 때 호출됩니다

다음은 작은 프로그램을 통해 이러한 인터셉터를 사용하는 방법을 보여줍니다.

코드 복사 코드는 다음과 같습니다.
intercept_demo 클래스{
개인 $xingming = "";
비공개 $나이 = 10;

// 정의되지 않은 속성에 접근하면 get{$property}에 해당하는 메서드가 호출됩니다.
함수 __get($property){
          $method = "get{$property}";
If (method_exists($this, $method)){
               return $this->$method();
}
}

// 정의되지 않은 속성에 값이 설정된 경우 set{$property}에 해당하는 메서드가 호출됩니다.
함수 __set($property, $value){
          $method = "set{$property}";
If (method_exists($this, $method)){
                return $this->$method($value);
~ }

// 사용자가 정의되지 않은 속성에 대해 isset 메서드를 호출하면
함수 __isset($property){
          $method = "isset{$property}";
If (method_exists($this, $method)){
               return $this->$method();
}
}

// 사용자가 정의되지 않은 속성에 대해 unset 메소드를 호출하면
// // 해당 unset{$property} 메소드가 호출된 것으로 간주됩니다
함수 __unset($property){
          $method = "설정 해제{$property}";
If (method_exists($this, $method)){
               return $this->$method();
}
}

함수 __call($method, $arg_array){
If (substr($method,0,3)=="get"){
                $property = substr($method,3);
                 $property = strtolower(substr($property,0,1)).substr($property,1);
               $this->$property 반환
}
}

함수 testIsset(){
          반환 isset($this->Name);
}

함수 getName(){
          return $this->xingming;
}

함수 setName($value){
           $this->xingming = $value;
}

함수 issetName(){
          return !is_null($this->xingming);
}

함수 unsetName(){
$this->xingming = NULL;
}
}

$intercept = 새로운 Intercept_demo();

echo "속성 이름을 Li로 설정";
$intercept->이름 = "리";
echo "$intercept->이름={$intercept->이름}";
echo "isset(이름)={$intercept->testIsset()}";
에코 "";
echo "속성 이름 값 지우기";
unset($intercept->Name);
echo "$intercept->이름={$intercept->이름}";
에코 "";
echo "정의되지 않은 getAge 함수 호출";
echo "age={$intercept->getAge()}";

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.