使用`spl_autoload_register()`可以加载哪些类型的PHP符号?
关于
spl_autoload_register()可加载的符号类型说明 - 目前PHP的
spl_autoload_register()仅支持三类符号的自动加载:- 普通类、抽象类、Final类
- 接口(interface)
- Trait
这三类在PHP底层属于同一种类结构存储,所以自动加载逻辑对三者通用,官方文档没明确提接口和Trait属于文档描述疏漏,实际生产环境已经广泛使用这个特性加载接口和Trait。
- 以下两类符号不支持通过
spl_autoload_register()自动加载:- 自定义函数:当调用未定义的函数时,PHP不会触发自动加载流程,会直接报
Call to undefined function错误,你提到的自动加载函数所在文件的需求无法通过这个方法实现。 - 常量:当使用未定义的常量时,PHP也不会触发自动加载,会直接报
Use of undefined constant警告,同样无法通过自动加载器加载常量定义文件。
- 自定义函数:当调用未定义的函数时,PHP不会触发自动加载流程,会直接报
补充说明:如果需要实现函数、常量的预加载,目前通用的方案是在包管理配置里提前声明对应文件,初始化阶段统一加载这些文件即可。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

