1.__construct()
如英文意思,就是构造函数。这个跟普通的构造函数的区别在于,不用每次都定义一个与类名同名的函数作为构造函数。
class Model{
private $param =null;
public function __construct($param){ //构造函数
$this->param =$param;
}
}
2.__call($funcName, $params)
是在实例调用类中未定义的函数时触发的函数
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)
用来调用类中的非公有属性:
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()
这个是用来引入类文件的,一般我们是用include、include_once、require、require_once来引入文件的
但是如果我们要引入多个文件,就要写当好的引入语句,这样既不方便又不美观,__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{
}
//在继承中,也会自动引入父类的类文件