이 글은 주로 외부 호출 클래스의 사유 재산에 대해 다루고 있는데, 이는 특정 참고 가치가 있으며 관심 있는 친구들이 이에 대해 배우고 도움을 받을 수 있기를 바랍니다.
먼저 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출력을 살펴보세요:
__set
함수가 호출되고 클래스의 개인 속성을 사용할 수 없다는 메시지가 표시됩니다. __set
함수를 사용하여 비공개 속성의 외부 사용을 구현해 보겠습니다. #🎜🎜#rrreee#🎜🎜#출력을 살펴보세요. #🎜🎜#rrreee#🎜🎜#이것은 다음을 의미합니다. 사용은 성공적입니다. #🎜🎜##🎜🎜#관련 튜토리얼: #🎜🎜#PHP 비디오 튜토리얼#🎜🎜##🎜🎜#위 내용은 외부 호출 클래스의 개인 속성을 학습하는 PHP의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!