PHP 중get()과set()의 용법 실례 상세 설명

3710 단어 getset
php 대상 지향get(),_set()의 용법 은 일반적으로 클래스 의 속성 을 private 로 정의 하 는데 이것 은 현실 적 인 논리 에 더욱 부합된다.그러나 속성 에 대한 읽 기와 할당 작업 이 매우 빈번 하기 때문에 PHP 5 에서 두 함수''를 미리 정의 합 니 다.get()과"set()"속성 을 가 져 오고 할당 합 니 다.자바 의 javabean 과 유사 한 동작 입 니 다.사용 하 는 방법 도 유사 합 니 다.다만 javabean 처럼 필드 마다 set 와 get 작업 을 할 필요 가 없습니다.두 가지 마술 방법 만 더 하면 된다.즉,개인 구성원 의 설정 값 과 값 을 추출 하 는 작업 입 니 다.PHP 5 에 서 는 속성 설정 값 과 값 을 가 져 오 는 방법 을 제공 합 니 다."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 에 전달 합 니 다.이 방법 을 실행 하여 할당 의 목적 을 달성 합 니 다.구성원 속성 이 개인 으로 봉인 되 지 않 으 면 대상 자체 가 이 방법 을 자동 으로 호출 하지 않 습 니 다.불법 값 이 들 어 오지 않 기 위해 서 는 이 방법 으로 판단 할 수도 있다.코드 는 다음 과 같 습 니 다.
 
<?php
class Person
{
// ,
private $name; //
private $sex; //
private $age; //
//__get()
private function __get($property_name)
{
echo " , __get() <br>";
if(isset($this->$property_name))
{
return($this->$property_name);
}
else
{
return(NULL);
}
}
//__set()
private function __set($property_name, $value)
{
echo " , __set() <br>";
$this->$property_name = $value;
}
}
$p1=newPerson();
// , __set()
$p1->name=" ";
$p1->sex=" ";
$p1->age=20;
// , __get() ,
echo " :".$p1->name."<br>";
echo " :".$p1->sex."<br>";
echo " :".$p1->age."<br>";
?>
프로그램 실행 결과:개인 속성 치 를 직접 설정 할 때 이 를 자동 으로 호출 합 니 다.set()방법 은 사유 속성 할당 을 위해 사유 속성 값 을 직접 설정 할 때 이 를 자동 으로 호출 합 니 다.set()방법 은 사유 속성 할당 을 위해 사유 속성 값 을 직접 설정 할 때 이 를 자동 으로 호출 합 니 다.set()방법 은 사유 속성 에 값 을 부여 합 니 다.사유 속성 값 을 직접 가 져 올 때 이 를 자동 으로 호출 합 니 다.get()방법 이름:장삼 은 사유 속성 치 를 직접 획득 할 때 이 를 자동 으로 호출 합 니 다.get()방법 성별:남 자 는 사유 속성 치 를 직접 획득 할 때 이 를 자동 으로 호출 합 니 다.get()방법 연령:20 이상 코드 를 추가 하지 않 으 면get()과set()방법 은 프로그램 에 오류 가 발생 합 니 다.클래스 의 외부 에서 개인 구성원 을 조작 할 수 없 기 때문에 위의 코드 는 자동 으로 를 호출 합 니 다.get()과set()방법 은 봉 인 된 개인 구성원 을 직접 액세스 하 는 데 도움 을 줍 니 다.

좋은 웹페이지 즐겨찾기