學齋隨筆,初九潛龍勿用,-51關於類的自動加載,遍歷,魔術常量,序列化反序列化

  類的自動加載是外面的頁面中,並不須要去「引入」(包含)類文件,可是程序會在須要一個類的時候就自動去「動態加載」該類。php

  1.使用__autoload魔術函數。它本身引數據庫

  2.使用spl_autoload_register函數數組

  對象也能夠能夠使用foreach語句進行遍歷,有兩點注意:函數

  1,只能遍歷屬性。spa

  2,只能遍歷「看獲得」的屬性——代碼所在範圍可訪問。scala

  內置標準類,直接new一個,裏面屬性只要用就有,很隨意。對象

  數據轉對象,對象轉數據,字符串

  對象轉換爲對象:沒有變化;get

  數組轉換爲對象:數組的鍵名看成屬性名,值爲對應值;string

    但一般,若是數數字下標,則其對應屬性 並不方便操做

    因此一般就適合於純字符下標的數組。

  其餘標量數據轉換爲對象:屬性名爲固定的「scalar」,值爲該變量的值。

  對於類型約束在php裏不用太在乎,php屬於弱類型語言。

  與類有關的魔術常量:

    __CLASS__,:獲取其所在的類的類名。

    __METHOD__:獲取其所在的方法的方法名。

  數據(變量)序列化和反序列化

  序列化是將一個變量的數據「轉換爲」字符串——但並非類型轉換並將該字符串「存儲起來」。

  反序列化就是將儲存的文本文件再返回成原數據。 

序列化:

 

  $str = serialize($變量); //此時該變量的數據就變成了字符串,並存入變量$str1;

 

  但一般的應用出,此時就應該將其保存爲文件(或數據庫),以下:

 

  file_put_contents(「文本文件路徑」,   $str);

 

反序列化:

 

  $str = file_get_contents(「文本文件路徑」); //先從文本文件中取得內容

 

  $v1 = unserialize( $str); //反序列化,此時$v1這個變量中存儲的就是原來變量內容(和類型)

 其餘魔術方法 

  __sleep(), 和 __wakeup()

  當對一個對象進行「序列化」操做的時候,會自動調用類中的__sleep()方法;

  當「反序列化」一個對象的時候,會自動調用對應類中的__wakeup()方法;

 

  __tostring()方法

 

  當把一個對象看成一個「字符串」來看待(處理)的時候,會自動調用該魔術方法。

  __invoke()方法

  對象看成一個「方法」(函數)的時候,會自動調用該魔術方法。

相關文章
相關標籤/搜索