自動加載就是引入的文件放入,只要輸入類名就能夠實現引入文件中的方法,從而減小了工做量和代碼量php
例子:sql
function __autoload($MysqlDB){數據庫
require($MysqlDB.".class.php");數組
}函數
做用是:代替__autoload函數,能夠應文件分佈多個目錄中的狀況ui
語法:spa
spl_autoload_regist(「函數名1」);scala
spl_autoload_regist(「函數名2」);對象
主要克隆對象中的「非對象非資源」數據繼承
只能克隆對象中的「非對象非資源」數據:
人爲的去複製潛克隆複製不了的數據
這樣的話就須要對該對象類使用魔術方法:
__clone()
使用的是foreach語句進行遍歷
注意:1,只能遍歷看獲得的「屬性」,並且必須在類裏面
若是要所有遍歷,例子以下:
若是隻獲取兩個屬性的數據,那麼操做以下:
內部沒有定義任何屬性,可是該類的屬性可使用,只適合純字符下標數組
標量數據轉換爲對象:屬性名爲固定的「scalar」,值爲該變量的值
只能將必須指定的類型存儲在該相對應的類型數據中
int n1 = 1; //int整數類型變量
float f1 ; //float小數類型變量
bool function getConcat( string s1, string s2){。。。。} //兩個形參是string,返回值也是bool型
對函數(或方法)的參數設定必須使用的類型。只能對對象,接口,數組和函數進行約束,以下所示:
function f1(類名 $p1){....}:參數只能使用該類的對象;
function f1(接口名 $p1){....}:參數只能使用實現該接口的對象;
function f1(array $p1){....}:參數只能使用數組;
function f1(callable $p1){....}:參數只能是一個函數或方法,也叫回調函數(方法)
__CLASS__,:獲取其所在的類的類名。
__METHOD__:獲取其所在的方法的方法名。
echo __CLASS__; //輸出「A」
echo __METHOD__; //輸出「f1」
//注意:get_class()也能夠獲得類名,但其必須有個「對象」
序列化的作法:
1,$str = serialize($變量); //此時該變量的數據就變成了字符串,並存入變量$str1;
但一般的應用出,此時就應該將其保存爲文件(或數據庫),以下:
2,file_put_contents(「文本文件路徑」, $str);
反序列化操做:
3,$str = file_get_contents(「文本文件路徑」); //先從文本文件中取得內容
4,$v1 = unserialize( $str); //反序列化,此時$v1這個變量中存儲的就是原來變量內容(和類型)
__sleep()方法中能夠進行一些數據(資源)的清理工做,並返回一個數組,該數組能夠存儲一些想要進行序列化的對象的屬性——便可以挑選屬性進行序列化。
__wakeup()方法中,能夠在進行反序列化操做的時候進行某些有用的「數據恢復工做」,好比:鏈接數據庫
這是「序列化」對象:
轉換爲字符串的方法
對象看成一個「方法」(函數)的時候,會自動調用該魔術方法。
class_exists(), :判斷某個類是否存在(定義過)
interface_exists(), :判斷接口是否存在
get_class():獲取某個對象的「所屬類名」
get_parent_class(), :獲取某個對象的「所屬父類的類名」
get_class_methods(), :獲取一個類的全部方法,返回一個索引數組,就是這些方法的名字。
get_class_vars(), :獲取一個類的全部屬性,返回一個數組,下標爲屬性名,值爲屬性值。
get_declared_classes():得到全部聲明過的類(含系統中的類)
is_object():判斷是否對象
get_object_vars():得到對象的全部屬性,返回一個數組,下標爲屬性名,值爲屬性值
運算符:
new:
instanceof: 判斷一個對象是不是某個類的「實例」
封裝:把數據私有化,封閉起來 private
繼承:子類繼承父類的屬性和方法
多態:一個對象相同的東西獲得的結果不一樣