Carson_Lai

导航

 

1.__construct()和__destruct()
当对象被实例化时它会被调用,__construct()会被调用;
当对象被销毁时,__destruct()析构方法会被调用

2.__get()和__set()

读取不可访问属性的值时,__get()会被调用
在给不可访问属性赋值时,__set()会被调用

3.__isset()和__unset()

当对不可访问属性调用isset()或empty()时,__isset()会被调用
当对不可访问属性调用unset()时,__unset()会被调用

4.__call()和__callStatic()  demo9实例

__call():当对象访问不存在的方法名称时,__call()方法会被自动调用。此方法有两个参数,分别是错误的方法名和错误的值
__callStatic():当对象访问不存在的静态方法名称时,__callStatic()方法会被自动调用

5.__toString() 和__invoke()

__toString ( void ):当对象被当做string使用时(即“echo 对象句柄”的时候),这个方法会被自动调用。
此方法必须用return返回一个字符串,用echo会报错。

__invoke():当对象被当成方法调用时,这个方法会被自动调用。

<?php
    class Magic{
        public function  __tostring(){
            return "hello world!";
        }
        public function __invoke($x){
            echo "__invoke called with param ".$x."\n";
        }
    }
    $obj = new Magic();
    $obj(858);         //__invoke called with param 10
?>

6.__clone()

此方法在clone对象的时候自动调用,对克隆对象初始化的一些操作。

7.__autoload(),自动载入对象的方法,如果该文件没有要实例化的类,则调用__autoload()方法。
唯一的一个魔术方法在类外使用。

<?php

function __autoload($name)
{
    include ("$name" . ".php");
}

$d = new demo();
//相当于include("demo.php"),那么就可以调用demo.php里面的成员了。
//首先有demo.php文件,这个文件里面有demo类。那个$d就可以访问demo类的变量了

$t = new test();
//相当于include("test.php"),那么就可以调用demo.php里面的成员了。

?>

posted on 2015-12-24 15:15  Carson_Lai  阅读(109)  评论(0)    收藏  举报