PHP 非一般方法 _set()、get()、isset() 与 _unset()
PHP 特殊方法 __set()、__get()、__isset() 与 __unset()
- __set() 方法用于设置私有属性值。
- __get() 方法用于获取私有属性值。
- __isset() 方法用于检测私有属性值是否被设定。
- __unset() 方法用于删除私有属性。
实际应用中,经常会把类的属性设置为私有(private),那么需要对属性进行访问时,就会变得麻烦。虽然可以将对属性的访问写成一个方法来实现,但 PHP 提供了一些特殊方法来方便此类操作。
__set()
__set() 方法用于设置私有属性值:
function __set($property_name, $value){ $this->$property_name = $value; }
在类里面使用了 __set() 方法后,当使用 $p1->name = "张三"; 这样的方式去设置对象私有属性的值时,就会自动调用 __set() 方法来设置私有属性的值。
__get()
__get() 方法用于获取私有属性值:
function __set($property_name, $value){ return isset($this->$property_name) ? $this->$property_name : null;}
例子:
<?phpclass Person { private $name; private $sex; private $age; //__set()方法用来设置私有属性 function __set($property_name, $value) { echo "在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值<br />"; $this->$property_name = $value; } //__get()方法用来获取私有属性 function __get($property_name) { echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br>"; return isset($this->$property_name) ? $this->$property_name : null; }}$p1=new Person();//直接为私有属性赋值的操作, 会自动调用 __set() 方法进行赋值$p1->name = "张三";//直接获取私有属性的值, 会自动调用 __get() 方法,返回成员属性的值echo "我的名字叫:".$p1->name; ?>
运行该例子,输出:
在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值在直接获取私有属性值的时候,自动调用了这个 __get() 方法我的名字叫:张三
__isset()
__isset() 方法用于检测私有属性值是否被设定。
如果对象里面成员是公有的,可以直接使用 isset() 函数。如果是私有的成员属性,那就需要在类里面加上一个 __isset() 方法:
private function __isset($property_name){ return isset($this->$property_name);}
这样当在类外部使用 isset() 函数来测定对象里面的私有成员是否被设定时,就会自动调用 __isset() 方法来检测。
__unset()
__unset() 方法用于删除私有属性。
同 isset() 函数一样,unset() 函数只能删除对象的公有成员属性,当要删除对象内部的私有成员属性时,需要使用__unset() 方法:
private function __unset($property_name){ unset($this->$property_name);}
- __set() 方法用于设置私有属性值。
- __get() 方法用于获取私有属性值。
- __isset() 方法用于检测私有属性值是否被设定。
- __unset() 方法用于删除私有属性。
实际应用中,经常会把类的属性设置为私有(private),那么需要对属性进行访问时,就会变得麻烦。虽然可以将对属性的访问写成一个方法来实现,但 PHP 提供了一些特殊方法来方便此类操作。
__set()
__set() 方法用于设置私有属性值:
function __set($property_name, $value){ $this->$property_name = $value; }
在类里面使用了 __set() 方法后,当使用 $p1->name = "张三"; 这样的方式去设置对象私有属性的值时,就会自动调用 __set() 方法来设置私有属性的值。
__get()
__get() 方法用于获取私有属性值:
function __set($property_name, $value){ return isset($this->$property_name) ? $this->$property_name : null;}
例子:
<?phpclass Person { private $name; private $sex; private $age; //__set()方法用来设置私有属性 function __set($property_name, $value) { echo "在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值<br />"; $this->$property_name = $value; } //__get()方法用来获取私有属性 function __get($property_name) { echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br>"; return isset($this->$property_name) ? $this->$property_name : null; }}$p1=new Person();//直接为私有属性赋值的操作, 会自动调用 __set() 方法进行赋值$p1->name = "张三";//直接获取私有属性的值, 会自动调用 __get() 方法,返回成员属性的值echo "我的名字叫:".$p1->name; ?>
运行该例子,输出:
在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值在直接获取私有属性值的时候,自动调用了这个 __get() 方法我的名字叫:张三
__isset()
__isset() 方法用于检测私有属性值是否被设定。
如果对象里面成员是公有的,可以直接使用 isset() 函数。如果是私有的成员属性,那就需要在类里面加上一个 __isset() 方法:
private function __isset($property_name){ return isset($this->$property_name);}
这样当在类外部使用 isset() 函数来测定对象里面的私有成员是否被设定时,就会自动调用 __isset() 方法来检测。
__unset()
__unset() 方法用于删除私有属性。
同 isset() 函数一样,unset() 函数只能删除对象的公有成员属性,当要删除对象内部的私有成员属性时,需要使用__unset() 方法:
private function __unset($property_name){ unset($this->$property_name);}

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 공지: 비객체 솔루션의 속성을 가져오는 중 PHP 개발 프로세스 중에 다음과 같은 일반적인 오류 메시지가 나타날 수 있습니다. 비객체의 속성을 가져오는 중(비객체의 속성을 가져오는 중). 이 오류는 일반적으로 객체 유형이 아닌 변수의 속성에 액세스하거나 메서드를 호출하려고 할 때 발생합니다. 이 기사에서는 이에 대해 소개합니다.

PHP로 코드를 작성할 때 "주의사항: 정의되지 않은 속성"이라는 오류 메시지가 나타날 수 있습니다. 이 오류는 일반적으로 코드에서 속성이 초기화되지 않았기 때문에 정의되지 않은 속성에 액세스하고 있음을 의미합니다. 그렇다면 이 문제를 해결하는 방법은 무엇입니까? 다음은 몇 가지 가능한 해결 방법입니다. 속성 초기화 이것이 이 문제를 해결하는 가장 간단한 방법입니다. 코드에서 속성을 명시적으로 초기화하면 해당 속성이 사용 전에 정의됩니다. 예: 수업

이 글에서는 PHP가 특정 키가 배열에 존재하는지 여부를 어떻게 판단하는지 자세히 설명할 것입니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 글을 읽으신 후 참고하실 수 있기를 바랍니다. PHP는 지정된 키가 배열에 존재하는지 확인합니다. PHP에서는 지정된 키가 배열에 존재하는지 확인하는 여러 가지 방법이 있습니다. 1. isset() 함수를 사용합니다: isset($array["key"]) 이 함수 부울 값을 반환합니다. 지정된 키가 존재하면 true이고, 그렇지 않으면 false입니다. 2. array_key_exists() 함수를 사용하세요: array_key_exists("key",$arr

Vue는 사용자 인터페이스 구축에 널리 사용되는 JavaScript 프레임워크입니다. 개발 과정에서 다양한 오류와 예외가 발생할 수 있습니다. 일반적인 오류 중 하나는 "TypeError:Cannotreadproperty'XXX'ofnull"입니다. 이번 글에서는 이 오류의 원인과 해결 방법을 살펴보겠습니다. 먼저 이 오류의 원인을 이해해 보겠습니다. 객체의 속성이나 메소드에 접근하려고 할 때,

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

TypeError:Vue에서 정의된 속성'$XXX'ofun을 읽을 수 없습니다. 해결 방법은 무엇입니까? Vue 개발에서는 TypeError:Cannotreadproperty'$XXX'ofundefine과 같은 오류가 자주 발생합니다. 이 오류는 일반적으로 Vue 인스턴스에서 정의되지 않은 속성이나 메서드를 사용하여 발생합니다. 이 오류가 발생하면 우리는

TypeError:Vue에서 정의된 속성'XXX'ofun을 읽을 수 없습니다. 어떻게 해야 합니까? Vue를 사용하여 개발하는 프런트 엔드 개발자의 경우 개발 프로세스 중에 TypeError:Cannotreadproperty'XXX'ofundefine 오류가 자주 발생할 수 있습니다. 이 오류는 일반적으로 정의되지 않은 속성에 액세스하려고 할 때 발생합니다. 존재하다

PHP알림: 비개체 솔루션을 얻으려는 중 PHP에서 개발할 때 "알림: 비개체의 속성을 얻으려는 중"이라는 오류 메시지가 나타날 수 있습니다. 이 오류 메시지는 일반적으로 초기화되지 않은 개체를 사용하거나 개체가 참조를 잃어버렸기 때문에 발생합니다. 특정 코드 부분에서 속성에 올바르게 액세스할 수 없습니다.
