麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

PHP學習之外部調用類的私有屬性

2024-09-04 11:46:49
字體:
來源:轉載
供稿:網友

本篇文章主要講述的是外部調用類的私有屬性,具有一定的參考價值,感興趣的朋友可以了解一下,希望能夠幫到你。

外部調用類的私有屬性

先來了解一下PHP類中的__get和__set函數

當試圖獲取一個不可達屬性時,類會自動調用__get函數。

當試圖設置一個不可達屬性時,類會自動調用__set函數。

首先,來看一下__get函數,先來獲取一個可達屬性試試:

  1. <?php 
  2.  
  3.     class A{ 
  4.  
  5.         public $a=1; 
  6.  
  7.         private $b=2; 
  8.  
  9.         function __get($name){ 
  10.  
  11.             echo 'you can get '.$name
  12. //Vevb.com 
  13.         } 
  14.  
  15.     } 
  16.  
  17.     $dy = new A(); 
  18.  
  19.     echo $dy->a; 
  20.  
  21. ?> 

看一下它的返回:

1

沒有問題,沒有調用__get函數,現在我來訪問一個私有的不可達屬性:

  1. <?php 
  2.  
  3.     class A{ 
  4.  
  5.         public $a=1; 
  6.  
  7.         private $b=2; 
  8.  
  9.         function __get($name){ 
  10.  
  11.             echo 'you can get '.$name
  12. //Vevb.com 
  13.         } 
  14.  
  15.     } 
  16.  
  17.     $dy = new A(); 
  18.  
  19.     echo $dy->b; 
  20.  
  21. ?> 

會發現:

you can get b

說明這里調用了__get函數,我再來看一下__set函數,同樣也是先使用可達的public屬性:

  1. <?php 
  2.  
  3.     class A{ 
  4.  
  5.         public $a
  6.  
  7.         private $b
  8.  
  9.         function __set($name,$val){ 
  10.  
  11.             echo 'you can get '.$name.$val
  12.  
  13.         } 
  14.  
  15.     } 
  16.  
  17.     $dy = new A(); 
  18.  
  19.     $dy->a = 1; 
  20.  
  21.     echo $dy->a; 
  22.  
  23. ?> 

看一下輸出:

1

使用成功,沒有問題,接著我們來使用私有屬性:

  1. <?php 
  2.  
  3.     class A{ 
  4.  
  5.         public $a
  6.  
  7.         private $b
  8.  
  9.         function __set($name,$val){ 
  10.  
  11.             echo 'you can get '.$name.$val
  12.  
  13.         } 
  14.  
  15.     } 
  16.  
  17.     $dy = new A(); 
  18.  
  19.     $dy->b = 1; 
  20.  
  21.     echo $dy->b; 
  22.  
  23. ?> 

這時看到:

you can get b1

PHP Fatal error:  Cannot access private property A::$b in /usercode/file.php on line 11

這里調用了__set函數并提示我們不能使用類的私有屬性。

現在來通過__set函數實現外部使用私有屬性:

  1. <?php 
  2.  
  3.     class A{ 
  4.  
  5.         public $a
  6.  
  7.         private $b
  8.  
  9.         function __set($name,$val){ 
  10.  
  11.                 $this->$name=$val
  12.  
  13.         } 
  14.  
  15.         function B(){ 
  16.  
  17.             echo $this->b; 
  18.  
  19.         } 
  20.  
  21.     } 
  22.  
  23.     $dy = new A(); 
  24.  
  25.     $dy->b = 1; 
  26.  
  27.     $dy->B(); 
  28.  
  29. ?> 

看一下輸出:

1

說明使用成功。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91热久久免费频精品黑人99 | 91亚洲免费视频 | 91精品国产免费久久 | 国产一区网址 | 日本黄色免费片 | 欧美日韩精品中文字幕 | 一区二区三区在线观看免费视频 | 黄色免费播放网站 | 日韩黄色片免费看 | 久久久久97国产精 | 一及毛片视频 | 午夜视频在线观看91 | 久久久中 | 日韩黄色免费电影 | 黄色av.com | 国产精品久久久久久久久久东京 | 国产手机国产手机在线 | 特级黄一级播放 | 龙床上的呻吟高h | xxxxhdhdhdhd日本 | 成年性羞羞视频免费观看无限 | 国产无遮挡一级毛片 | 91精品国产92久久久久 | xnxx 日本免费 | 日韩精品羞羞答答 | 亚洲天堂在线电影 | a级在线| 欧美性受xxxx白人性爽 | 欧美成人高清视频 | 欧美成年人视频 | 色综合久久久久综合99 | www.91在线| 国产精品久久久久影院老司 | 久久久久久久久国产 | 色中射 | 13一14毛片免费看 | 欧美视频在线一区二区三区 | 九九热精品在线 | h色网站免费观看 | 99精品热视频 | 欧洲成人一区 |