__isset(), 액세스할 수 없는 속성에 대해 isset() 또는 empty()가 호출될 때 호출됩니다.
이 메서드를 살펴보기 전에 isset() 함수를 사용하는 방법을 살펴보겠습니다. 변수가 설정되어 있는지 확인합니다. 이 함수는 변수를 매개변수로 전달하고 전달된 변수가 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
그러면 객체의 멤버가 설정되었는지 확인하기 위해 객체 외부에서 isset() 함수를 사용하는 경우 이를 사용할 수 있나요?
객체의 멤버가 공개인 경우 이 함수를 사용하여 멤버 속성을 측정할 수 있습니다. 그 이유는 비공개 멤버 속성이 캡슐화되어 있기 때문입니다. 외부에서는 보이지 않습니다. 그러면 비공개 멤버 속성이 설정되었는지 확인하기 위해 객체 외부에서 isset() 함수를 사용할 수 없나요? 물론 가능하지만 확정된 것은 아닙니다.
클래스에 __isset() 메서드만 추가하면 됩니다. 클래스 외부에서 isset() 함수를 사용하여 객체의 private 멤버가 설정되었는지 확인하면 클래스의 __isset이 자동으로 호출됩니다. 방법은 이러한 작업을 완료하는 데 도움이 됩니다.
__isset()의 역할:
액세스할 수 없는 속성에서 isset() 또는 empty()가 호출되면 __isset()가 호출됩니다.
아래 코드 데모를 참조하세요.
<?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 __isset($content) { echo "当在类外部使用isset()函数测定私有成员{$content}时,自动调用<br>"; echo isset($this->$content); } } $person = new Person("小明", 25); // 初始赋值 echo isset($person->sex),"<br>"; echo isset($person->name),"<br>"; echo isset($person->age),"<br>";
실행 결과는 다음과 같습니다.
1 // public 可以 isset() 当在类外部使用isset()函数测定私有成员name时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo 当在类外部使用isset()函数测定私有成员age时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo
위 내용은 PHP의 __isset() 메소드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!