Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php spl\u自动加载\u寄存器()性能问题?_Php_Spl Autoload Register - Fatal编程技术网

Php spl\u自动加载\u寄存器()性能问题?

Php spl\u自动加载\u寄存器()性能问题?,php,spl-autoload-register,Php,Spl Autoload Register,我想我对spl\u autoload\u register()overautoload()的优点有所欠缺。 从我读到的内容来看,spl\u autoload\u register()的优点是它可以注册多次,然后当我实例化一个类时,它将通过所有注册的自动加载函数运行并加载正确的函数,这将给我更大的灵活性,并允许我使用不同的函数加载类或库 但是,如何将其视为在单个注册函数上运行多个注册函数的最佳实践呢 (或者我根本就不明白)当然,如果你有几个注册的自动加载器,速度会慢一些。然而,它更适合现代软件开发

我想我对
spl\u autoload\u register()
over
autoload()
的优点有所欠缺。 从我读到的内容来看,
spl\u autoload\u register()
的优点是它可以注册多次,然后当我实例化一个类时,它将通过所有注册的自动加载函数运行并加载正确的函数,这将给我更大的灵活性,并允许我使用不同的函数加载类或库

但是,如何将其视为在单个注册函数上运行多个注册函数的最佳实践呢


(或者我根本就不明白)

当然,如果你有几个注册的自动加载器,速度会慢一些。然而,它更适合现代软件开发的实际情况,在这种情况下,来自不同供应商的许多库通常都包含在同一个项目中。一次只能定义一个可用作自动加载器的“自动加载”功能。但是,每个包可以单独将自动加载器附加到
spl\u autoload
链,而不会覆盖其他包注册的自动加载器。这就是重点;它使自动加载器的使用更加灵活,而不需要每个人都担心踩到别人的脚。

正如其他人在这里所说:
spl\u autoload\u register
允许您同时实现多个自动加载器,这使得处理依赖项变得更加容易。
其他好处包括:

  • 控件:您可以组织自动加载堆栈:如果希望自动加载程序是第一个被调用的,则可以调用
    spl\u autoload\u register
    ,将
    true
    作为第三个参数传递,该参数在自动加载程序之前
  • 行为:您可以注册一个自动加载器,如果它由于任何原因无法注册自动加载器,就会抛出一个异常。这使得调试时的工作更轻松
  • 动态自动加载器:您可以注册自动加载器,也可以注册自动加载器,或者只需检查注册的自动加载器
简而言之:
spl\u autload\u register
不是一个单一的函数,它是自动加载系统的一部分,包括
spl\u autload\u函数(查看已注册的自动加载程序)和
spl\u autoload\u unregister
以删除任何不再需要的自动加载程序。

如果您愿意,您还可以通过注销自动加载器并附加/预加自动加载器来重新组织自动加载器堆栈,以最适合您的需要。

这被认为是更好的方法,因为它允许您与注册自己的自动加载器的库一起工作。。。如果使用具有自动加载器的库,而不使用spl_autoload_register,则必须重写所有这些库自动加载器,以反映您自己的单个自动加载器逻辑