项目需求
CodeIgniter+Smarty3.0.8
Smarty 使用了 自动装载机制,如果不开启自带的自动装载,那Smarty会注册自己的一个方法做自动装载,导致__autoload 失效。为什么失效呢!下面分析下
PHP 版本>=5.1.2
当我们不调用spl_autoload_register 去注册自动装载方法的时候(可以调用spl_autoload_functions() 方法来查看当前的自动装载累的方法有哪些)
系统会自动使用__autoload 作为自动装载的方法
调用 spl_autoload_functions() 得到 一个方法: __autoload
一旦我们调用了 spl_autoload_register 方法,那__autoload方法就会失效
两种情况:
1、调用spl_autoload_register(),不带参数
这个时候会注册一个 spl_autoload 方法
调用 spl_autoload_functions() 得到 一个方法: spl_autoload
2、调用spl_autoload_register(‘my_autoload’),带参的可以有多个参数,class,function 也可以
这个时候会注册一个用户自己的方法
调用 spl_autoload_functions() 得到 一个方法: my_autoload
——————————-
备注:可以注册多个自己的方法,甚至可以吧__autoload 重新注册回去
那如果smarty导致__autoload不能用,那就注册一个自己的autoload方法解决问题