为什么我要使用spl_autoload_register而不是include或require for类和函数


Why would I use spl_autoload_register instead of include or require for classes and functions?

我不明白spl_autoload_registerautoload在做什么。

为什么我不直接使用include或require?

我没有看到一个明确的答案。

自动加载函数或类的优点是:

  1. 如果您有很多类,则不需要手动包含它们。以Zend Framework为例:您不希望手动加载所有这些类。使用自动加载器,只需创建一个新类,并开始在所有(启用了自动加载器)文件中使用它
  2. 只加载请求中实际使用的文件,这可能会节省资源。如果你只使用50个文件中的10个,为什么要加载其他40个
  3. 它迫使你有一个合理的目录布局(毕竟,你需要一些规则,这样你的自动加载器才能找到文件)
  4. 它可以(但不是根据定义)比手动包含更快。链接文章中的基准测试表明,如果你在页面上使用了大约四分之三的可用类,你就会"收支平衡"。即便如此,自动加载也会让你的生活变得更加轻松,即使它比手动加载慢得多,你仍然应该这样做