国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > 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

說明使用成功。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溧水县| 青川县| 鹰潭市| 孝义市| 九寨沟县| 乐东| 唐海县| 红河县| 勃利县| 定南县| 盐山县| 张家港市| 工布江达县| 永春县| 富源县| 姚安县| 巴彦县| 江华| 阿克| 博客| 西昌市| 宜昌市| 翁源县| 岚皋县| 大田县| 光山县| 沧州市| 阳西县| 科技| 屏山县| 左云县| 威远县| 盐源县| 全南县| 潞城市| 博湖县| 巧家县| 湘阴县| 宿迁市| 获嘉县| 塔河县|