PHP:__autoload堆栈可以持久化吗


PHP: Can the __autoload stack be persistent?

我认为这是不可能的,因为PHP是一种无状态语言。但我还是会问。。。

我创建了一个自主开发的MVC框架。这些类都以名称命名。在初始加载时,我实例化自定义的Autoload类。该类的一个方法扫描已注册的类目录(存储在应用程序配置中),并创建一个路径的完全限定类名数组。数组存储为此类的受保护成员。此成员数组由spl_autoload()实现使用。Autoloader对象被缓存并在每个http请求中重复使用。

这很好。然而,每次http请求进入域时,我的引导例程都必须将autoload方法注册到__autoload堆栈,这让我很恼火。我很想注册一次,不要管它。

我认为最接近这一点的方法是操作码缓存,在这里完成解析并构建机器语言。除此之外,你是对的,作为一种无状态语言意味着它每次都必须构建。我自己从来没有深入研究过(所以我不确定它是否能回答你的问题),但也有预编译的PHP。