백엔드 개발 PHP 튜토리얼 PHP中__get()和__set()的用法实例详解_PHP

PHP中__get()和__set()的用法实例详解_PHP

Jun 01, 2016 pm 12:06 PM
get set

php面向对象_get(),_set()的用法
一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性。类似于java中的javabean的操作,使用的方法也类似,只是不需要像javabean中那样,对每个字段进行set和get的操作。只需要加上两个魔术方法即可。即私有成员的设值和取值的操作。在PHP5中给我们提供了专门为属性设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样,类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:
复制代码 代码如下:
//__set()方法用来设置私有属性
public function __set($name,$value){
$this->$name = $value;
}
//__get()方法用来获取私有属性
public function __get($name){
return $this->$name;
}

__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的,但是如果你在类里面加上了这个方法,在使用“echo$p1->name”这样的语句直接获取值的时候就会自动调用__get($name)方法,将属性name传给参数$name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。

__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上
了,如果没有__set()这个方法,是不允许的,比如:$this->name=‘zhangsan',这样会出错,但是如果你在类里面加上了__set($property_name, $value)这个方法,在直接给私有属性赋值的时候,就会自动调用它,把属性比如name传给$property_name,把要赋的值“zhangsan”传给$value,通过这个方法的执行,达到赋值的目的。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值,还可以在这个方法给做一下判断。代码如下:
复制代码 代码如下:
class Person
{
//下面是人的成员属性,都是封装的私有成员
private $name; //人的名子
private $sex; //人的性别
private $age; //人的年龄
//__get()方法用来获取私有属性
private function __get($property_name)
{
echo "在直接获取私有属性值的时候,自动调用了这个__get()方法
";
if(isset($this->$property_name))
{
return($this->$property_name);
}
else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
private function __set($property_name, $value)
{
echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
";
$this->$property_name = $value;
}
}
$p1=newPerson();
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值
echo "姓名:".$p1->name."
";
echo "性别:".$p1->sex."
";
echo "年龄:".$p1->age."
";
?>

程序执行结果:
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接获取私有属性值的时候,自动调用了这个__get()方法
姓名:张三
在直接获取私有属性值的时候,自动调用了这个__get()方法
性别:男
在直接获取私有属性值的时候,自动调用了这个__get()方法
年龄:20
以上代码如果不加上__get()和__set()方法,程序就会出错,因为不能在类的外部操作私有成员,而上面的代码是通过自动调用__get()和__set()方法来帮助我们直接存取封装的私有成员的。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

MyBatis 동적 SQL 태그의 Set 태그 기능에 대한 자세한 설명 MyBatis 동적 SQL 태그의 Set 태그 기능에 대한 자세한 설명 Feb 26, 2024 pm 07:48 PM

MyBatis 동적 SQL 태그 해석: Set 태그 사용법에 대한 자세한 설명 MyBatis는 풍부한 동적 SQL 태그를 제공하고 데이터베이스 작업 명령문을 유연하게 구성할 수 있는 탁월한 지속성 계층 프레임워크입니다. 그 중 Set 태그는 업데이트 작업에서 매우 일반적으로 사용되는 UPDATE 문에서 SET 절을 생성하는 데 사용됩니다. 이 기사에서는 MyBatis에서 Set 태그의 사용법을 자세히 설명하고 특정 코드 예제를 통해 해당 기능을 보여줍니다. Set 태그란 무엇입니까? Set 태그는 MyBati에서 사용됩니다.

PowerShell을 사용하여 작업을 자동화하는 방법 PowerShell을 사용하여 작업을 자동화하는 방법 Feb 20, 2024 pm 01:51 PM

IT 관리자이거나 기술 전문가라면 자동화의 중요성을 인식해야 합니다. 특히 Windows 사용자의 경우 Microsoft PowerShell은 최고의 자동화 도구 중 하나입니다. Microsoft는 타사 응용 프로그램을 설치할 필요 없이 자동화 요구 사항에 맞는 다양한 도구를 제공합니다. 이 가이드에서는 PowerShell을 활용하여 작업을 자동화하는 방법을 자세히 설명합니다. PowerShell 스크립트란 무엇입니까? PowerShell을 사용한 경험이 있다면 명령을 사용하여 운영 체제를 구성했을 수 있습니다. 스크립트는 .ps1 파일에 있는 이러한 명령의 모음입니다. .ps1 파일에는 기본 Get-Help와 같이 PowerShell에서 실행되는 스크립트가 포함되어 있습니다.

Java는 어떻게 http 요청을 시작하고 게시물을 호출하고 인터페이스를 얻습니까? Java는 어떻게 http 요청을 시작하고 게시물을 호출하고 인터페이스를 얻습니까? May 16, 2023 pm 07:53 PM

1. Java가 post 인터페이스를 호출합니다. 1. java와 함께 제공되는 URLConnection 또는 HttpURLConnection을 사용합니다. 다른 jar 패키지를 다운로드할 필요가 없습니다. 서버에서 인터페이스 응답 코드를 수정하면 반환 메시지를 받을 수 없습니다. 응답 코드가 올바른 경우에만 수신할 수 있습니다. publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt

자바스크립트에서 세트의 요소를 삭제하는 방법 자바스크립트에서 세트의 요소를 삭제하는 방법 Jan 12, 2022 am 10:56 AM

요소를 삭제하는 방법: 1. Set 객체에서 지정된 요소를 삭제하려면 delete()를 사용합니다. 구문은 "setObj.delete(value);"입니다. 2. Clear()를 사용하여 Set 객체의 모든 요소를 ​​삭제합니다. 구문은 "setObj.delete(value);" "setObj.clear();"입니다.

Curl Get 명령의 예 Curl Get 명령의 예 Mar 20, 2024 pm 06:56 PM

Linux에서 URL 또는 Curl 클라이언트는 HTTPS, HTTP, FTP 등과 같은 다양한 프로토콜을 사용하여 네트워크를 통해 데이터를 전송할 수 있는 널리 사용되는 명령줄 유틸리티입니다. get, post 및 요청 메소드를 사용하여 데이터를 보내고 받을 수 있습니다. 그중에서도 "get" 메소드를 자주 사용해야 합니다. 따라서 생산성을 높이는 데 사용할 수 있는 다양한 방법과 다양한 옵션을 배우는 것이 중요합니다. "컬링 작업을 수행하는 것은 몇 가지 간단한 명령을 입력하는 것만큼 간단합니다. 간단한 것처럼 보이지만 많은 사용자는 그 잠재력을 완전히 인식하지 못합니다. 따라서 이 짧은 가이드는 Linux 시스템에서 컬 작업을 수행하는 방법에 대한 몇 가지 정보를 제공합니다. " 컬겟" 명령 "컬.

jQuery의 get 메소드와 post 메소드의 유사점과 차이점에 대한 심층 분석 jQuery의 get 메소드와 post 메소드의 유사점과 차이점에 대한 심층 분석 Feb 24, 2024 pm 12:15 PM

Get 및 Post는 jQuery에서 일반적으로 사용되는 두 가지 Ajax 요청 방법으로, 서버에 요청을 보내고 데이터를 얻는 데 사용됩니다. 사용법과 일부 기능에 차이가 있습니다. 다음으로 유사점과 차이점을 자세히 설명하고 구체적인 코드 예제를 첨부하겠습니다. get과 post의 유사점: 둘 다 ajax 요청을 보내는 방법입니다. URL과 데이터 매개변수를 지정하여 서버에서 데이터를 얻을 수 있습니다. 둘 다 서버에서 반환된 데이터를 처리하거나 실패한 요청을 처리하는 데 사용되는 매개 변수로 콜백 함수를 허용할 수 있습니다.

Ubuntu의 apt-get 업데이트 소스를 변경하는 방법은 무엇입니까? Ubuntu의 apt-get 업데이트 소스를 변경하는 방법은 무엇입니까? Jan 05, 2024 pm 03:40 PM

Ubuntu의 apt-get 소스를 수동으로 수정합니다. 1. ssh 도구를 사용하여 Ubuntu에 연결합니다(저는 xshell을 사용합니다). 2. 명령줄에 cd/etc/apt/3을 입력하고 이 디렉터리에 source.list 파일을 백업합니다(필자는 4. source.list 파일 내용을 지웁니다(참고: 지운 후에는 복원할 수 없으므로 파일을 백업하려면 이전 단계를 수행해야 합니다). 5. vim을 사용하여 source.list를 열고 i 키를 눌러 편집 모드로 들어가서 소스를 붙여넣습니다. 수정할 주소를 누른 다음

Python 프로그래밍에서 dict 및 set의 일반적인 사용 목록 Python 프로그래밍에서 dict 및 set의 일반적인 사용 목록 Jul 25, 2023 pm 04:52 PM

이 글은 Python의 기초를 바탕으로 dict와 set을 사용하는 방법을 소개합니다. 키-값 저장 구조를 사용하는 dict는 Python에서 가장 일반적으로 사용되는 키로 불변 객체를 선택하는 것이 중요합니다. 문자열입니다.

See all articles