php函数get和set,php中外部类调用_get函数和_set函数的方法
本篇文章給大家分享的內容是關于php中外部類調用_get函數和_set函數的方法,有詳細的代碼,希望可以幫助到有需要的朋友。
外部調用類的私有屬性
先來了解一下PHP類中的__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函數實現外部使用私有屬性:<?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
說明使用成功。
相關推薦:
總結
以上是生活随笔為你收集整理的php函数get和set,php中外部类调用_get函数和_set函数的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 判断 多组,请教怎么有效判断几组
- 下一篇: php 队列取并集,PHP实现对数组简单