이 기사의 예에서는 PHP 인터셉터의 사용을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
PHP는 아래와 같이 정의되지 않은 메서드와 속성에 액세스할 때 호출되는 여러 인터셉터를 제공합니다.
1.__get($속성)
기능: 정의되지 않은 속성에 액세스하는 것을
2. __set($속성, $값)
함수: 정의되지 않은 속성에 대한 값을 설정할 때 호출됩니다
3. __isset($속성)
함수: 정의되지 않은 속성에 대해 isset()이 호출될 때 호출됩니다.
4.__unset($속성)
함수: 정의되지 않은 속성에 대해 unset()이 호출될 때 호출됩니다.
5. __call($메소드, $arg_array)
함수: 정의되지 않은 메소드를 호출할 때 호출됩니다
다음은 작은 프로그램을 통해 이러한 인터셉터를 사용하는 방법을 보여줍니다.
// 정의되지 않은 속성에 값이 설정된 경우 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;
}
}
echo "속성 이름을 Li로 설정";
$intercept->이름 = "리";
echo "$intercept->이름={$intercept->이름}";
echo "isset(이름)={$intercept->testIsset()}";
에코 "";
echo "속성 이름 값 지우기";
unset($intercept->Name);
echo "$intercept->이름={$intercept->이름}";
에코 "";
echo "정의되지 않은 getAge 함수 호출";
echo "age={$intercept->getAge()}";