来看一个官网的例子。
class trick { function doit() { echo __FUNCTION__; } function doitagain() { echo __METHOD__; } } $obj=new trick(); $obj->doit(); output will be ---- doit $obj->doitagain(); output will be ----- trick::doitagain通过上面的例子,可以看出FUNCTION和METHOD的不同之处,前者只返回了函数名称,而后者则 返回了一个跟在类名后的方法名称。
2.魔术方法 在PHP中,把以两个下划线__开头的方法称为魔术方法,所以我们在自定义方法的时候,建议不要使用__作为方法的前缀。这些方法在PHP的作用非常广泛,是我们在编写面向对象的代码中,必须掌握的。魔术方法包括: __construct() 类的构造函数 __destruct() 类的析构函数 __call() 在对象中调用一个不可访问方法时调用 __callStatic() 用静态方式中调用一个不可访问方法时调用 __set() 设置一个类的成员变量时调用 __get() 获得一个类的成员变量时调用 __isset() 当对不可访问属性调用isset()或empty()时调用 __unset() 当对不可访问属性调用unset()时被调用 __sleep() 执行serialize()时,先会调用这个函数 __wakeup() 执行unserialize()时,先会调用这个函数 __toString() 类被当成字符串时的回应方法 __invoke() 调用函数的方式调用一个对象时的回应方法 __set_state() 调用var_export()导出类时,此静态方法会被调用 __clone() 当对象复制完成时调用 __debugInfo() 打印所需调试信息 下面先以__construct(),类的构造函数函数为例,说明魔术方法的作用机制: PHP中构造放阿飞是**对象创建完成后**第一个被对象自动调用方法,在每个类中,都有一个构造方法, 如果没有显式的声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。 作用:通常被用来执行一些初始化的任务。 使用方法: Class MyClass { function __construct([$params]) { do something; } } 需要注意的是,在同一个类中,我们只能声明一个构造方法,原因是PHP不支持构造函数重载。 ......先写到这里,上班了......