__unset(), 액세스할 수 없는 속성에 대해 unset()이 호출될 때 호출됩니다.
이 메서드를 살펴보기 전에 unset() 함수를 살펴보겠습니다. unset() 함수는 지정된 변수를 삭제하고 true를 반환하는 것입니다.
그럼 객체 외부에서 객체 내부의 멤버 속성을 삭제하고 싶다면 unset() 함수를 사용할 수 있나요?
여기에는 당연히 두 가지 상황이 있습니다.
1. 객체의 구성원 속성이 공개인 경우 이 기능을 사용하여 객체 외부의 공개 속성을 삭제할 수 있습니다.
2. 개체의 구성원 속성이 비공개인 경우 이 기능을 사용하여 삭제할 권한이 없습니다.
위의 두 가지 상황이 있지만 제가 말씀드리고 싶은 것은 객체에 __unset() 메서드를 추가하면 객체 외부에서 해당 객체의 private 멤버 속성을 삭제할 수 있다는 것입니다. 객체에 __unset() 메서드를 추가한 후, 객체 외부에서 "unset()" 함수를 사용하여 객체 내부의 전용 멤버 속성을 삭제하면 객체는 자동으로 __unset() 함수를 호출하여 전용 멤버 삭제를 도와줍니다. 개체 내부의 속성입니다.
다음 코드를 참조하세요:
<?php class Person { public $sex; private $name; private $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } /** * @param $content * * @return bool */ public function __unset($content) { echo "当在类外部使用unset()函数来删除私有成员时自动调用的<br>"; echo isset($this->$content); } } $person = new Person("小明", 25); // 初始赋值 unset($person->sex); unset($person->name); unset($person->age);
실행 결과:
当在类外部使用unset()函数来删除私有成员时自动调用的 1当在类外部使用unset()函数来删除私有成员时自动调用的 1
위 내용은 PHP의 __unset() 메소드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!