-
__autoload(); 當實例化一個不存在的類時,自動調用此函數. 通過定義這個函數來啟用類的自動加載。 function __autoload($class_name) { $path = str_replace('_', '/', $class_name); require_once $path . '.php'; } // 這里會自動加載Http/File/Interface.php 文件 $a = new Http_File_Interface(); serivalize 串行化:返回一個包含字節流的字符串 unserivalize 反串行化:重新把字符串變回php原來的值。 對象、數組都可以串行化。 串行化serialize可以把變量包括對象,轉化成連續bytes數據. 可以將串行化后的變量存在一個文件里或在網絡上傳輸. 然后再反串行化還原為原來的數據. 在反串行化類的對象之前定義的類,PHP可以成功地存儲其對象的屬性和方法. 有時你可能需要一個對象在反串行化后立即執行. 為了這樣的目的,PHP會自動尋找__sleep和__wakeup方法. 當一個對象被串行化,PHP會調用__sleep方法(如果存在的話). 在反串行化一個對象后,PHP 會調用__wakeup方法. 這兩個方法都不接受參數. __sleep方法必須返回一個數組,包含需要串行化的屬性. PHP會拋棄其它屬性的值. 如果沒有__sleep方法,PHP將保存所有屬性. 在程序執行前,serialize() 函數會首先檢查是否存在一個魔術方法 __sleep.如果存在,__sleep()方法會先被調用, 然后才執行串行化(序列化)操作。這個功能可以用于清理對象,并返回一個包含對象中所有變量名稱的數組。如果該方法不返回任何內容,則NULL被序列化,導致 一個E_NOTICE錯誤。與之相反,unserialize()會檢查是否存在一個__wakeup方法。如果存在,則會先調用 __wakeup方法,預先準備對象數據。 __sleep方法常用于提交未提交的數據,或類似的操作。同時,如果你有一些很大的對象, 不需要保存,這個功能就很好用。__wakeup經常用在反序列化操作中,例如重新建立數據庫連接,或執行其它初始化操作。查看全部
-
class NbaPlayer{ public $name; } $james = new NbaPlayer(); $james -> name = 'James'; echo $james -> name.'<br />'; $james1 = clone $james; $james1 -> name = 'James1'; echo $james1 -> name.'<br/>'; echo $james -> name; 輸出結果為:james還是james,james1變成了james1 如果是直接賦值:改變james1,james也跟著改變 想改變一個對象,但是又不想影響源對象,使用clone查看全部
-
屬性重載只能在對象中進行。在靜態方法中,這些魔術方法將不會被調用。所以這些方法都不能被 聲明為 static。從 PHP 5.3.0 起, 將這些魔術方法定義為 static 會產生一個警告。 不可訪問屬性,也包括雖然跟定義了沒有訪問權限 格式: __get()方法:這個方法用來獲取私有成員屬性值的,有一個參數,參數傳入你要獲取的成員屬性的名稱,返回獲取的屬性值,這個方法不用我們手工的去調用,因為我們也可以把這個方法做成私有的方法,是在直接獲取私有屬性的時候對象自動調用的。 __set()方法:這個方法用來為私有成員屬性設置值的,有兩個參數,第一個參數為你要為設置值的屬性名,第二個參數是要給屬性設置的值,沒有返回值。查看全部
-
__call() 方法的重載 當對象訪問不存在的方法名稱時,__call()方法會被自動調用 格式:__call(string $function_name, array $arguments) 該方法有兩個參數,第一個參數 $function_name 會自動接收不存在的方法名,第二個 $args 則以數組的方式接收不存在方法的多個參數。 __callStatic() 靜態方法的重載,注意這個方法需要設定為static 當對象訪問不存在的靜態方法名稱時,__callStatic()方法會被自動調用 格式: public static mixed __callStatic ( string $name , array $arguments ) $name 參數是要調用的方法名稱。$arguments 參數是一個枚舉數組,包含著要傳遞給方法 $name 的參數。 這兩個方法在PHP里面也被成為方法的重載(overloading) 注意區分重寫(overwrite) 通過這兩個方法,同一個方法的名稱的調用可以對應不同的方法實現查看全部
-
__tostring() 當對象唄當作String使用時,這個方法會被自動調用 echo $obj; __invoke(); 當對象被當作成員方法調用時,這個方法會被自動調用 $obj(4);查看全部
-
__construct() __destruct() __tostring() __invoke() __call() __callStatic() __get() __set() __isset() __unset() __clone()查看全部
-
接口里面的方法都是沒有實現的,而類里面的方法都是有實現的 當接口中的某些方法對于所有的實現類都是一樣的實現方法,只有部分方法需要用到多態的特性時,就會需要用到抽象類 abstract 關鍵字用于定義抽象類 在抽象方法前面添加abstract 關鍵字可以標明這個方法是抽象方法不需要具體的實現 抽象類中可以包含普通的方法,普通方法有方法的具體實現 繼承抽象類的關鍵字是 extends 繼承抽象類的子類需要實現抽象類中定義的抽象方法 抽象類不能被實例化 含有抽象方法的類肯定是抽象類,但不是所有的抽象類都必須包含抽象方法查看全部
-
因為接口的方法實現可以有很多,所以對于接口里面定義的方法的具體實現是多種多樣的,這種特性我們稱為多態。查看全部
-
接口就是把不同類的共同行為進行了定義,然后在不同的類里面實現不同的功能。 interface 關鍵字用于定義接口 接口里面的方法不需要有方法的實現,就是不用加{} implements 關鍵字用于表示類實現某個接口 實現了某個接口之后,必須提供接口中定義的所有方法的具體實現 接口不能被實例化 可以使用instanceof 關鍵字來判斷某個對象是否實現了某個接口 可以使用extends 關鍵字讓接口繼承接口 當類實現子接口時,父接口定義的方法也需要在這個類里面具體實現查看全部
-
在子類中用 parent 關鍵字可以訪問父類中被子類重寫的方法 例:parent::test(); 在類的內部可以使用$this -> 方法名 的方式訪問自身的成員方法,也可以使用self::方法名 的方式訪問。 有一個成員叫常量成員,使用const關鍵字定義。 訪問常量成員使用self::常量名的方式訪問查看全部
-
子類中編寫跟父類完全一致的方法可以完成對父類方法的重寫 在成員方法前面添加 final 關鍵字能夠讓這個方法不能在子類中被重寫 對于不想被任何類繼承的類可以在 class之前添加 final 關鍵字查看全部
-
靜態 static查看全部
-
當需要所有的實例共用一個成員的時候,會用到靜態屬性、靜態方法 靜態屬性、靜態方法定義時在訪問控制關鍵字后面添加static關鍵字即可。 在類中使用靜態成員的時候,用self關鍵字后面跟上::操作符即可,注意:在訪問靜態成員屬性的時候,::后面需要跟$符號,訪問靜態方法則不需要。 在類的外部訪問時,不需要實例化,直接使用類名跟上::操作符的方式。 在類的內部使用parent 關鍵字就能夠訪問父類的靜態成員 例:echo parent::$sValue;查看全部
-
在php中可以用 extends 關鍵字來表示類的繼承,后面跟父類的類名。 在php中 extends 后面只能跟一個類的類名,這就是php的單繼承原則。查看全部
-
注意: 當我們拿到一個對象,要做引用賦值的時候注意&符號的區別: 有&:相當于創建了兩個名字而已,沒有生成新的引用,還是同一個引用 沒有&:相當于是兩個引用查看全部
舉報
0/150
提交
取消