为什么有函数spl_autoload_unregister?如果我在什么情况下注册自动加载器,我想取消注册它?对我来说似乎是多余的。
还有那个主题的另一个问题:既然现在 php 5.5 带有内置的 opcache,而且过去很多安装 apc - 有什么理由一起使用自动加载器吗?因为现在所有代码无论如何都会进入内存 - 只制作一个加载我所有 php 类的文件不是更好吗?
为什么有函数spl_autoload_unregister?如果我在什么情况下注册自动加载器,我想取消注册它?对我来说似乎是多余的。
还有那个主题的另一个问题:既然现在 php 5.5 带有内置的 opcache,而且过去很多安装 apc - 有什么理由一起使用自动加载器吗?因为现在所有代码无论如何都会进入内存 - 只制作一个加载我所有 php 类的文件不是更好吗?
您可以指定多个自动加载方法。因此,如果您的应用程序有很多自动加载方法,那么您也可能希望取消注册这些方法。在实践中,这种方法的存在可能更多是为了完整性(没有太多项目使用如此多的方法,以至于您想取消注册自动加载方法)。
操作码缓存是一个不同的主题。这与自动加载无关。当 PHP 被告知执行文件时,它首先解析文件并构建机器级指令代码(操作代码或操作码)。第二遍执行机器级代码。操作码缓存(APC、Zend Opcache等)只是存储机器级代码,因此您只需在下次调用该页面时执行它,从而为您自己节省额外的处理。
展开评论
您可以根据需要包含所有文件,但自动加载有两件重要的事情
至于你的 opcache,你的想法是不正确的。假设您包括您使用的所有类和方法。现在,假设您有一个页面只使用了 25% 的代码库。这意味着您加载了其他 75% 并强制 opcache 对其进行缓存。但是为了什么目的?Opcache 在逐个文件的基础上工作,而不是在项目级别的基础上工作。所以你会在每一页上膨胀你的代码而没有任何收获,因为自动加载无论如何都会包含你需要的代码,但是是动态的。