8

我有一个脚本用于autoload加载未找到的类。我没有故意包含该文件(尽管我可以),但我希望自动加载功能包含所需的文件。

因为脚本可以是递归的,也就是说如果已经加载了类,我不想class_exists在脚本的每个递归中检查相应的文件是否已加载。

4

2 回答 2

9

如果要避免__autoload,可以使用require_once代替include

使用的性能损失__autoload可能相当大,特别是因为某些操作码缓存不能正确支持它。但是,鉴于它非常方便,除非您的操作码缓存不缓存自动加载包含,否则我会说使用它。

于 2010-07-26T00:53:38.903 回答
6

如果您将自动加载器设置为加载您的类并且不使用require(等),则只有在引用不存在的类时才会调用自动加载器。所以永远不需要检查class_exists自动加载器(如果类存在,它不会被调用)。

关于性能。如果您使用大型库,自动加载实际上可以更快,因为它只加载所需的文件/类。根据我的经验,无论哪种方式,速度影响都可以忽略不计(总是使用操作码缓存,正如其他人所提到的)。

于 2010-07-26T01:06:14.543 回答