> 백엔드 개발 > PHP 튜토리얼 > PHP 매직 메소드 __set __get 메소드

PHP 매직 메소드 __set __get 메소드

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-07-29 09:02:13
원래의
949명이 탐색했습니다.

먼저 공식문서의 설명을 보세요
__set()는 접근 불가능한 속성에 데이터를 쓸 때 실행됩니다.
__get()은 접근 불가능한 속성에서 데이터를 읽어오는 데 활용됩니다.
정확히 무엇을 중국어로 번역하려면 어떻게 해야 하나요? 접근할 수 없음: 접근하기 어렵습니다.
코드가 있고 진실이 있습니다:

<?php

error_reporting(E_ALL);

class stu{

private $a;

private $b = 0;

public $c;

public $d = 0;

//这里的 private 可以用 protected public 替代

private function __get($name) {

return 123;

}

//这里的 private 也可以用 protected public 替代

private function __set($name, $value) {

echo "This is set function";

}

}

$s = new stu();

var_dump($s->a);  //output: 123

var_dump($s->b);  //output: 123

var_dump($s->c);  //output: null

var_dump($s->d);  //output: 0

var_dump($s->e);  //output: 123

$s->a = 3;   //output: This is set function

$s->c = 3;  //no output

$s->f = 3;  //output: This is set function

?>

<?php

오류 보고(E_ALL);


class< /code> <code>stu{

비공개 $a;< /code> <br><br><code> 비공개 $b = 0;

공개 $c;

공개 $d = 0;

<🎜> //여기 private은 protected public으로 대체될 수 있습니다.<🎜><🎜> private function __get(< 코드 >$이름) {<🎜><🎜> 반환 123;<🎜><🎜> }<🎜><🎜> <🎜><🎜> //여기 private은 protected public으로 대체될 수도 있습니다<🎜><🎜> private function __set( < 코드>$이름, $값) {<🎜><🎜> 에코 "이것은 함수가 설정되었습니다.";<🎜><🎜> }<🎜><🎜>}</code ><🎜><🎜><code>$s = stu();<🎜><🎜>var_dump($s ->a); //출력: 123var_dump($s->b); //출력: 123var_dump($s->c); //출력: nullvar_dump($s->d); //출력: 0var_dump($s->e); //출력: 123$s->a = 3; //출력: 이것은 설정된 기능입니다$s->c = 3; //아니요 출력$s->f = 3; //출력: 설정된 기능입니다?>
결과: __get 메소드가 없는 경우 var_dump($s->a) var_dump($s->b)를 실행하면 치명적인 오류가 발생합니다 __get 메서드가 없습니다. var_dump($s->e)를 실행할 때 $e 속성이 정의되지 않았다는 알림이 표시됩니다요약:1. 액세스할 수 없는 속성에서 데이터를 읽을 때 __get () 메소드는 호출2. 액세스할 수 없는 속성에 값을 할당할 때 __set() 메소드가 호출됩니다3. 액세스할 수 없는 속성에는 (1) 비공개 속성, (2) 초기화되지 않은 속성4이 있습니다. __isset() __unset()도 비슷합니다 위 내용은 PHP 매직 메소드인 __set __get 메소드를 관련 내용을 포함하여 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿