PHP의 외부 클래스에서 _get 함수 및 _set 함수를 호출하는 방법

不言
풀어 주다: 2023-04-03 13:50:01
원래의
1819명이 탐색했습니다.

이 글의 내용은 PHP의 외부 클래스에서 _get 함수와 _set 함수를 호출하는 방법에 대해 공유하는 것입니다. 도움이 필요한 친구들에게 도움이 되기를 바랍니다.

외부 호출 클래스의 전용 속성

먼저 PHP 클래스의 __get__set 함수에 대해 알아봅시다접속할 수 없는 속성을 가져오려고 하면 클래스가 자동으로 __get 함수를 호출합니다.
접근할 수 없는 속성을 설정하려고 하면 클래스가 자동으로 __set 함수를 호출합니다. __get__set函数
当试图获取一个不可达属性时,类会自动调用__get函数。
当试图设置一个不可达属性时,类会自动调用__set函数。

首先,来看一下__get函数,先来获取一个可达属性试试:

<?php
    class A{
        public $a=1;
        private $b=2;
        function __get($name){
            echo &#39;you can get &#39;.$name;
        }
    }
    $dy = new A();
    echo $dy->a;
?>
로그인 후 복사

看一下它的返回:

1
로그인 후 복사
로그인 후 복사
로그인 후 복사

没有问题,没有调用__get函数,现在我来访问一个私有的不可达属性:

<?php
    class A{
        public $a=1;
        private $b=2;
        function __get($name){
            echo &#39;you can get &#39;.$name;
        }
    }
    $dy = new A();
    echo $dy->b;
?>
로그인 후 복사

会发现:

you can get b
로그인 후 복사

说明这里调用了__get函数,我再来看一下__set函数,同样也是先使用可达的public属性:

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
            echo &#39;you can get &#39;.$name.$val;
        }
    }
    $dy = new A();
    $dy->a = 1;
    echo $dy->a;
?>
로그인 후 복사

看一下输出:

1
로그인 후 복사
로그인 후 복사
로그인 후 복사

使用成功,没有问题,接着我们来使用私有属性:

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
            echo &#39;you can get &#39;.$name.$val;
        }
    }
    $dy = new A();
    $dy->b = 1;
    echo $dy->b;
?>
로그인 후 복사

这时看到:

you can get b1

PHP Fatal error:  Cannot access private property A::$b in /usercode/file.php on line 11
로그인 후 복사

这里调用了__set函数并提示我们不能使用类的私有属性。
现在来通过__set

우선, __get 함수를 살펴보겠습니다. 먼저 연결 가능한 속성을 가져옵니다.

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
                $this->$name=$val;
        }
        function B(){
            echo $this->b;
        }
    }
    $dy = new A();
    $dy->b = 1;
    $dy->B();
?>
로그인 후 복사

결과를 살펴보세요. #🎜 🎜#
1
로그인 후 복사
로그인 후 복사
로그인 후 복사

문제 없습니다. __get 함수는 호출되지 않습니다. 이제 연결할 수 없는 비공개 속성에 액세스하겠습니다.

rrreee

다음을 찾을 수 있습니다. #🎜 🎜#rrreee

여기서는 __get 함수가 호출된다고 설명합니다. __set 함수를 살펴보겠습니다. >public 속성을 ​​먼저 사용합니다: # 🎜🎜#rrreee

출력을 살펴보세요: rrreee 성공적으로 사용되었으므로 문제 없습니다. 그런 다음 비공개 속성을 사용합니다:

rrreee# 🎜🎜#이때 다음을 볼 수 있습니다: #🎜 🎜#rrreee

여기에서 __set 함수가 호출되고 클래스의 개인 속성을 사용할 수 없다는 메시지가 표시됩니다.
이제 __set 함수를 사용하여 비공개 속성의 외부 사용을 구현해 보겠습니다. rrreee출력을 살펴보세요.

rrreee#🎜🎜#이것은 다음을 의미합니다. 사용은 성공적입니다. #🎜🎜##🎜🎜#관련 권장사항: #🎜🎜##🎜🎜##🎜🎜#PHP에서 PDF 내보내기 기능을 구현하는 PHP 코드 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#PHP In -strpos 함수 심층 분석#🎜🎜##🎜🎜#

위 내용은 PHP의 외부 클래스에서 _get 함수 및 _set 함수를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿