php --魔術常量 /魔術方法

魔術常量:

1. __LINE__

返回文件中的當前行號。

2. __FILE__

返回所在文件的完整路徑。包含文件名

3. __FUNCTION__

返回所在函數名稱。

4. __CLASS__

返回所在類的名稱。

5. __METHOD__

返回所在類方法的名稱。需要注意__METHOD__返回的是"class::function"的形式,而__FUNCTION__則返回"function"的形式。

6.__DIR__

返回文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。它等價于 dirname(__FILE__)。除非是根目錄,否則目錄中名不包括末尾的斜杠。不包含文件名。(PHP 5.3.0中新增) =?

7.__NAMESPACE__

當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(PHP 5.3.0 新增)。

8.__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定義時的名字(區分大小寫)。Trait 名包括其被聲明的作用區域(例如 Foo\Bar

?

?

魔術方法:
PHP把類中所有以__(兩個下劃線)開頭的方法當成魔術方法,一般建議用戶不要將自定義的方法前面加上__作為前綴。魔術方法:

1. __construct()

類的默認構造方法,如果__construct()和與類同名的方法共同出現時,默認調用__construct()而不是同類名方法。一般情況下用戶自定義構造方法也會使用__construct()。

2. __destruct()

類的析構函數,當該對象的所有引用都被刪除,或者對象被顯式銷毀時執行。

3. __get($name)

可以簡單歸納為:用$object->a的方式讀取對象的屬性時,如果屬性a存在且是public型,那么直接返回該屬性的值;如果屬性a不存在或者是protected/private這樣的不可直接訪問的類型,就會調用__get($name)方法并以返回值為準。一般可以使用該方法使外部可限制性地訪問內部屬性,或者完成類似java中的反射操作。

4. __set($name, $value)

與__get($name)類似,用$object->a = 17的方式給屬性賦值時,如果屬性a存在且是public型,那么直接給屬性a賦值皆可;如果屬性a不存在或者是protected/private型,就會調用__set($name, $value)方法。

5. __call($name, $arguments) /?__callStatic($name, $arguments)

當調用不存在或者不可訪問的方法時,會調用__call($name, $arguments)方法。而當在靜態方法中調用不存在或者不可訪問的方法時,會調用__callStatic($name, $arguments)方法。

6. __toString()

當打印對象時會被直接調用。如echo $object;

7. __clone()

當對象被拷貝時直接調用。如$a = new Action(); $a = $object;

8. __isset($name) / __unset($name)

對不存在或者不可訪問的屬性使用isset()或者empty()時,__isset()會被調用;當unset一個不存在或者不可訪問的屬性時,__unset()會被調用,否則直接unset該屬性皆可。

9. __set_state()

用var_export()輸出一個對象時,__set_state()會被調用,輸出內容以該魔術方法的返回值為準。注:var_export()和var_dump()類似,只是var_export()輸出的內容符合php語法。注意使用方法:

?

$test = new Test();
$b = var_export($test, true);
var_dump($b);

?

class Test {

?

??? public $a;
??? public static function __set_state($array) {
??????? $ab = new Test();
??????? $ab->a = 10;
??????? return $ab;
????}
}


10. __autoload($name)

實例化一個對象時,如果對應的類不存在,則該方法被調用。注意:該方法是全局函數,參數是類的名稱。

11. __sleep() / __wakup()

轉載于:https://www.cnblogs.com/hmetoer2017/p/6292865.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255568.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255568.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255568.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【pyradiomics學習】——影像組學特征

目錄 1、形狀特征(14個) 2、一階特征(18個) 灰度共生矩陣特征(24個) 灰度區域大小矩陣特征(16個) 灰度行程矩陣特征(16個) 鄰域灰度差矩陣特…

NLP系列學習:前向算法和后向算法

在上一篇文章里,我們簡單的概述了隱馬爾科夫模型的簡單定義在<CRF-tutorial>這一篇文章里,我們可以看到HMM經過發展之后是CRF產生的條件,因此我們需要學好隱馬爾科夫模型.在這一部分,我比較推薦閱讀宗成慶老師的<自然語言處理>這本書,這一部分宗老師寫的很不錯,相關…

Java日期處理 開始時間-結束時間查詢

//開始時間 timeBegin " 00:00:00"; //結束時間 timeEnd " 23:59:59"; //時間轉換 SimpleDateFormat format new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Java時間類型轉換成Long類型(可封裝成工具類) public static Long stringToLong(St…

angular路由操作中'#'字符的解決辦法

var appangular.module("myapp",["ngRoute"]);app.controller("ctr",function($scope){});//angular1.6.0以上版本需要配置app.config(["$locationProvider",function($locationProvider){ $locationProvider.hashPrefix(""…

【TypeError: float() argument must be a string or a number, not ‘map’】

初始 相關系數過濾法調用函數 from sklearn.feature_selection import SelectKBest from scipy.stats import pearsonr SelectKBest(lambda X,Y:np.array(map(lambda x:pearsonr(x,Y),X.T)).T,k2) .fit_transform(X_test,y_test) TypeError: float() argument must be a strin…

CvScalar

CvScalar定義可存放1—4個數值的數值&#xff0c;其結構如下。 typedef struct CvScalar { doubleval[4]; } CvScalar; CvScalar pt&#xff1b; 如果使用的圖像是1通道的&#xff0c;則pt.val[0]中存儲數據 如果使用的圖像是3通道的&#xff0c;則pt.val[0]&#xff0c;pt…

UVA1493 - Draw a Mess(并查集)

UVA1493 - Draw a Mess(并查集) 題目鏈接 題目大意:一個N * M 的矩陣&#xff0c;每次你在上面將某個范圍上色&#xff0c;不論上面有什么顏色都會被最新的顏色覆蓋&#xff0c;顏色是1-9&#xff0c;初始的顏色是0.最后輸出這個矩形中。每一個顏色有多少個。某個范圍這個分為了…

Hyper-v Server 2012 Release Candidate 部署體驗

很多人知道&#xff0c;Microsoft Hyper-V分為兩種類型&#xff1a;一種是作為Windows Server的一個組件&#xff0c;另一種是作為虛擬化產品的單獨服務器。雖然兩者都是技術上的Hyper-V&#xff0c;每個版本的特性和用例各不相同。 Hyper-V Server直接在物理機器硬件上運行&am…

Unity 讀取資源(圖片)

方法一&#xff1a; 采用Resource.Load方法讀取&#xff0c;讀取在Unity中Assets下Resources目錄下的資源名&#xff08;不采用后綴&#xff09;。 //圖片放在Asset/Resources/ Texture2D tex (Texture2D)Resources.Load("圖片名稱"); 方法二&#xff1a; 采用WWW類…

【Python3 SelectKBest 調用personer出現的錯誤】

初始 相關系數過濾法調用函數 from sklearn.feature_selection import SelectKBest from scipy.stats import pearsonr SelectKBest(lambda X,Y:np.array(map(lambda x:pearsonr(x,Y),X.T)).T,k2) .fit_transform(X_test,y_test) TypeError: float() argument must be a strin…

ABB機器人的錯誤處理

ABB機器人的錯誤處理 errnum 數據類型 errnum用于描述在執行過程中&#xff0c;發生的所有可恢復的錯誤。例如程序執行時&#xff0c;被零除。 如果機器人程序執行過程中檢測到一個錯誤&#xff0c;錯誤非致命&#xff0c;可以被錯誤處理程序處理。 這類錯誤的典型例子是…

面向對象的七大原則

總脈絡圖&#xff1a; 一&#xff1a;單一職責原則(全稱&#xff1a;“Single-Responsibility Principle”)又稱 單一功能原則 核心&#xff1a;解耦和增強內聚性&#xff08;高內聚&#xff0c;低耦合&#xff09; 說明&#xff1a; 就一個類而言&#xff0c;應該只專注于做一…

福建工程學院寒假作業G題

漲姿勢題就是所謂的優化題&#xff0c;在組隊賽中&#xff0c;隊伍發現了一題水題&#xff0c;那么應該交給誰去處理&#xff1f;作為處理水題的代碼手&#xff0c;應該具備什么樣的素養&#xff1f;1&#xff0c;要快&#xff0c;水題拼的就是速度&#xff01;2&#xff0c;不…

excel 多列匹配相等后 引用值

2019獨角獸企業重金招聘Python工程師標準>>> 場景 如圖下&#xff0c;當A、B列與E、F列皮配上&#xff0c;C列則引用G列的值 原理 VLOOKUP只能查找單列值。我們可以把多列值拼接后形成一個虛擬列&#xff0c;然后VLOOKUP函數查找這個虛擬列進行匹配。 在C1處輸入下…

【BUG調試】——OSError: Caught OSError in DataLoader worker process 0

目錄 問題描述&#xff1a; 參考鏈接 問題分析 解決方案 出現情況 問題描述&#xff1a; 在使用pytorch搭建了VGG從頭開始訓練時出現了以下問題&#xff1a; OSError: Caught OSError in DataLoader worker process 0 參考鏈接 參考up主視頻&#xff1a;4.2 使用pytor…

cvAdd()和 cvAddS()函數的使用

函數原型如下&#xff1a; voidcvAdd( const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* maskNULL ); src1 第一個原數組 src2 第二個原數組 dst 輸出數組 mask 操作的復蓋面, 8-bit單通道數組; 只有復蓋面指定的輸出數組被修改。 函數 cvAdd 加一個數…

設計模式之接口隔離原則

這個原則想必大家從字面就可以猜出大體的含義&#xff0c;其實這個原則可以說是依賴倒置原則的一種進化補充&#xff0c;因為依賴倒置原則告訴我們實現類的各種依賴關系應該盡量隔離在抽象里面&#xff0c;同時底層的接口協議不應該依賴上層協議的變更而變更&#xff0c;所以我…

iOS 圖解多線程

轉載于:https://www.cnblogs.com/OnNineMonkey/p/5385963.html

Egret之位圖字體

1 , 關于位圖字體的制作 2 , egret官方提供的資源 看看cartoon-font.fnt的內容 {"file":"cartoon-font.png","frames":{ "A":{"x":1,"y":54,"w":21,"h":24,"offX":2,"offY&qu…

【機器視覺】——平面測量實際尺寸(像素尺寸轉物理尺寸)

目錄 方法一:比例尺法 方法:二:三角法 方法三:相機標定 以下方法均在平面的前提下進行 方法一:比例尺法 在一張紙上繪制一個帶刻度的直線,將紙張放在攝像頭下,抓取任意兩點的像素坐標,計算像素距離pd,再根據刻度讀取實際距離ad,根據兩者可以求出縮放比例,即地圖上…