日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP类中的__get()和__set函数到底有什么用

發布時間:2025/7/14 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP类中的__get()和__set函数到底有什么用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHP類中的__get()和__set函數到底有什么用

一、總結

一句話總結:當試圖獲取一個不可達變量時,類會自動調用__get。同樣的,當試圖設置一個不可達變量時,類會自動調用__set。在網站中,這兩個并不是什么非用不可的函數。所以可以用于輸出提示消息,或者返回值。

?

1、php中使用什么代替java面相對象中的常用的get和set方法?

類默認自帶的__get()和__set()

?

2、php中類中默認自帶的__get()方法什么時候被調用?

當試圖獲取一個不可達變量時,類會自動調用__get

所以在php中相當于可以直接用對象訪問私有屬性(因為會自動調用__get()方法)

?

3、php中如何調用類的私有屬性?

a、new對象($modelTime =new ModelTime();

b、用new出來的對象直接調用屬性(echo $modelTime->perDayTS;die;

c、在類中要寫__get()方法返回值

10 public function __get($my_var){ 11 return $this->$my_var; 12 }

?

?

二、PHP類中的__get()和__set函數到底有什么用?

當試圖獲取一個不可達變量時,類會自動調用__get。

同樣的,當試圖設置一個不可達變量時,類會自動調用__set。 在網站中,這兩個并不是什么非用不可的函數。 例如: Class Test { ? ? private $a = 1; ? ? private $b = 2; ? ? public ?$c = 3; ? ? ? public?function ?__get($vname) ? ? { ? ? ? ? return "you can not get"; ? ? } ? ? ? public function __set($vname,$value) ? ? { ? ? ? ? echo ?"you can not set"; ? ? } } ? $t = new Test; echo $t->a;//這里試圖要打印出私有變量 $t->b=3;//這里試圖要把私有變量進行設置 想要直接對私有變量操作,當然是做不到的。 于是在讀取的時候,調用__get(),輸出“you can not get”; 在設置的時候,調用__set(),輸出“you can not set”。 順便提一下,__get()和__set()函數要設置為public,要不然會Warning。 __get()和__set()函數定義時的參數分別為1個和2個,不管函數中到底有沒用,都是不可省略的。 通過修改__get()和__set()函數內部的語句,就可以實現在外部調用類的私有變量。 例如: private __get($vname) { ? ? return $this->$vname; } 如果$vname的值是a,那么就返回了正確的值。 __set()也同理。

public function?__set($vname,$value)
{
? ? $this->$vname?=?$value;
}

?

參考:

PHP類中的__get()和__set函數到底有什么用? - East2_100 - 博客園
https://www.cnblogs.com/east2-100/p/5272699.html

三、php中使用類默認自帶的__get()和__set()代替java中的常用的get和set方法

關鍵代碼

1 class Time extends Common 2 { 3 private $perDayTS; 4 public function __construct() { 5 parent::__construct(); 6 $this->perDayTS=24*60*60; 7 echo "正在調用構造函數".$this->perDayTS; 8 } 9 10 public function __get($my_var){ 11 return $this->$my_var; 12 }

調用

1 public function test1(){ 2 $modelTime =new ModelTime(); 3 echo $modelTime->perDayTS;die; 4 }

?

?

轉載于:https://www.cnblogs.com/Renyi-Fan/p/9487387.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的PHP类中的__get()和__set函数到底有什么用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。