1.__construct()php
如英文意思,就是構造函數。這個跟普通的構造函數的區別在於,不用每次都定義一個與類名同名的函數做爲構造函數。數組
class Model{ private $param =null; public function __construct($param){ //構造函數 $this->param =$param; } }
2.__call($funcName, $params)函數
是在實例調用類中未定義的函數時觸發的函數ui
class Model{ //$funcName: 未定義函數名 //$params(數組): 未定義函數的參數 __call($funcName, $params){ //我這裏沒有用到$params return "the function: $funcName is not exist!" } } $model =new Model(); $model->func(); //函數func不存在,就會觸發__call
3.__get($name)this
用來調用類中的非公有屬性:code
class Model{ private host ="http://localhost"; public function __get($name){ return $this->$name; } } $model =new Model(); echo $model->host; //訪問私有屬性
4.__set($name, $value)對象
和__get方法相對應,用來給非公有屬性的賦值繼承
class Model{ private host =null; public function __set($name, $value){ $this->$name =$value; } } $model =new Model(); $model->host ="http://localhost"; //給私有屬性賦值
5.__autoload()get
這個是用來引入類文件的,通常咱們是用include、include_once、require、require_once來引入文件的io
可是若是咱們要引入多個文件,就要寫當好的引入語句,這樣既不方便又不美觀,__autoload能夠解決這個問題
,他最大的好處是他的懶惰屬性,實例化對象的時候纔會引入對應的類文件。
//好比個人Model類文件Model.class.php 在當前目錄的上一層目錄下的Model/Model.class.php(其實就是引入 //類文件的路徑) function __autoload($className) { //$className就是類名 $filename = "../Model/". $className .".class.php"; //組合路徑 require_once "$filename"; //引入類文件 } //只要一實例化對象就會觸發這個函數 $model =new Model(); //這麼一句話就觸發了__autoload(其實原理想一想也明白) //在繼承中,__aotoload也是有效 function __autoload($className) { //$className就是類名 $filename = "../Model/". $className .".class.php"; //組合路徑 require_once "$filename"; //引入類文件 } class Child extends Father{ } //在繼承中,也會自動引入父類的類文件