PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括:
-
__construct(),类的构造函数
-
__destruct(),类的析构函数
-
__call(),在对象中调用一个不可访问方法时调用
-
__callStatic(),用静态方式中调用一个不可访问方法时调用
-
__get(),获得一个类的成员变量时调用
-
__set(),设置一个类的成员变量时调用
-
__isset(),当对不可访问属性调用isset()或empty()时调用
-
__unset(),当对不可访问属性调用unset()时被调用。
-
__sleep(),执行serialize()时,先会调用这个函数
-
__wakeup(),执行unserialize()时,先会调用这个函数
-
__toString(),类被当成字符串时的回应方法
-
__invoke(),调用函数的方式调用一个对象时的回应方法
-
__set_state(),调用var_export()导出类时,此静态方法会被调用。
-
__clone(),当对象复制完成时调用
-
__autoload(),尝试加载未定义的类
-
__debugInfo(),打印所需调试信息
php7.2下出现报错__autoload() is deprecated的解决办
错误原因:__autoload魔术方法在php7.2被废弃,使用新的方法代替了.
解决办法:把原来的__autoload()函数改为autoload(),然后加上一个spl_autoload_register(‘autoload’)的调用即可,如下:
//自动加载类库 spl_autoload_register('autoload'); //PHP7.2开始必须这样写 //自动加载类库处理
function autoload($class){
// 当底下实例化一个对象时,系统会自动检查你引入此文件,如果没有引入,自动帮你引入,但是注意一个问题,在写类名时一定要和文件名称一样,否则会引入文件失败
include $class.".php";//引入文件
}
spl_autoload_register("autoload");//参数为:方法的名称