[學習筆記]php中的過載與自動載入
阿新 • • 發佈:2019-02-01
過載技術通常含義:在一個類(物件)中有多個名字相同但形參不同的方法的現象。過載在php中的含義:當對一個物件或類使用其未定義的屬性或方法的時候,其中的一些“處理機制”屬性過載:取值:當對一個物件的不存在的屬性進行“取值”的時候,就會自動呼叫方法:__GET() //可以有一個形參,記錄名字賦值:當對當對一個物件的不存在的屬性進行“賦值”的時候,就會自動呼叫方法:__SET()//可以有兩個形參,名字 值判斷(isset):當對一個物件的不存在的屬性進行“isset判斷”的時候,就會自動呼叫方法:__isset()銷燬(unset):當對一個物件的不存在的屬性進行“unset銷燬”的時候,就會自動呼叫方法:__unset()注:前提是類中存在(定義)了這些方法的具體內容。被稱為魔術方法方法過載:當對一個物件的不存在的方法進行“呼叫”的時候,會自動呼叫類中的__call()這個魔術方法__call($methedName,$argument){}//必須帶兩個形參:方法名 實引數據(是一個數組)介面interface只能放抽象方法和常亮的一種類定義形式:interface 介面名{常亮1;常亮2;……抽象方法;}使用:介面名稱::常量名稱;//抽象方法不用abstact修飾介面對沒有多繼承的類之間關係的一個補充;class xxx implements xxx,xxx{}//實現介面$rec = mysql_fetch_assoc($result); //資料匹配到陣列$rec類的自動載入 __autoload含義:當某行程式碼需要一個類的會後,php的內部機制可以做到“自動載入該類檔案”,以滿足該行需要一個類的這種需求。什麼時候需要一個類:1.new一個物件的時候;2.使用一個類的靜態方法的時候;3.習慣上,類檔案的命名要有一定的“規則”,通常是:類名.class.php4.通常,我們需要將各種類,儲存在一些特定的目錄中,以方便確定其位置5.在該自動載入的函式中,充分使用傳過來的類名,以構建一個合適的檔案路徑並載入。function __autoload($class_name){require "./class/".$class_name.".class.php";}$obj1=new A(); //此時需要A這個類,就會自動呼叫__autoload函式,並將A類名(字串)傳過去自動載入函式(自定義)spl_autoload_register("autoload1");@作用:不報錯??例:<?phpspl_autoload_register("autoload1");spl_autoload_register("autoload2");function autoload1($class_name){$file = './class'.$class_name.'.class.php';if(file_exists($file)){include_once $file;}}function autoload2($class_name){$file = './lib'.$class_name.'.class.php';if(file_exists($file)){include_once $file;}}$a1=new A(); //這個類在class目錄下var_dump($a1);$b1=new B();//這個類在lib目錄下var_dump($b1);