찾다
php教程php手册php中__get()和__set()用法介绍

php中__get()和__set()用法介绍

Jun 13, 2016 am 10:15 AM
getphpset소개하다그리고물체재산비교하다용법~의설정지휘하다

想要对对象的属性进行一些设置,如果一个一个设置,会比较麻烦,这时可以使用对象的处理器函数__get()和__set(),不过使用这两个方法的前提,属性需要是protect或private的,如下例:

 代码如下 复制代码

 class Person
{
 private $__data = array();
 
 public function __get($property)
 {
  if (isset($this->__data[$property]))
  {
   return $this->__data[$property];
  }
  else
  {
   return false;
  }
 }
 
 public function __set($property, $value)
 {
  $this->__data[$property] = $value;
 }
}

__set()和__get()方法是针对protect或private属性的,这样可以做到在外界不能直接访问属性,而通过public定义的__set()和__get()方法却可以轻易访问它,同事这两个方法对属性的操作通用性也比较高,也可以限制对象的属性的合法性,只有属于$__data数组中的属性,才可以进行设置,可以防止外界直接对属性进行设置。但是使用__set()和__get()也有些不足之处。第一,这两个方法只会捕捉私有或受保护的属性,即是外界没有访问权限的属性,这样php会报一个致命错误;第二,这两个方法破坏了属性的继承性。如果父对象中有一个__set()方法,而在子类中又实现了自己的__get()方法,那么对象就不会正常的运行,因为父对象的__get()方法是永远调不到的,而且要想检测重写的属性是否存在也不能得到的,因为它不会调用__get()方法。见到有人通过实现__isset()和__unset()来解决上面的问题。代码如下:

 

 代码如下 复制代码
 public function __isset($property)
{
 if (isset($this->data[$property]))
 {
  return true;
 }
 else
 {
  return false;
 }
}
 
public function __unset($property)
{
 if (isset($this->data[$property]))
 {
  return unset($this->data[$property]);
 }
 else
 {
  return false;
 }
}

使用__isset()和__unset()则能保证属性是否真正存在,不过这两个方法只有在PHP5.1后才有效。

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기