이 글의 내용은 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 'you can get '.$name; } } $dy = new A(); echo $dy->a; ?>
看一下它的返回:
1
没有问题,没有调用__get
函数,现在我来访问一个私有的不可达属性:
<?php class A{ public $a=1; private $b=2; function __get($name){ echo 'you can get '.$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 'you can get '.$name.$val; } } $dy = new A(); $dy->a = 1; echo $dy->a; ?>
看一下输出:
1
使用成功,没有问题,接着我们来使用私有属性:
<?php class A{ public $a; private $b; function __set($name,$val){ echo 'you can get '.$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
여기서는__get
함수가 호출된다고 설명합니다. __set
함수를 살펴보겠습니다. >public 속성을 먼저 사용합니다: # 🎜🎜#rrreee출력을 살펴보세요: rrreee 성공적으로 사용되었으므로 문제 없습니다. 그런 다음 비공개 속성을 사용합니다:
rrreee# 🎜🎜#이때 다음을 볼 수 있습니다: #🎜 🎜#rrreee여기에서 __set
함수가 호출되고 클래스의 개인 속성을 사용할 수 없다는 메시지가 표시됩니다.
이제 __set
함수를 사용하여 비공개 속성의 외부 사용을 구현해 보겠습니다. rrreee출력을 살펴보세요.
위 내용은 PHP의 외부 클래스에서 _get 함수 및 _set 함수를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!