-1

据我所知,PHP 是解释性语言,虽然它是一种解释性语言,但它如何检测整个项目的编译错误,如果它在不生成目标代码的情况下编译,那么编译需要什么?仅用于语法?

4

1 回答 1

2

我相信 PHP 被编译成一个内部数据结构,而这个内部结构就是被执行的。运行时在执行时不会逐行读取实际的程序源代码。因此,“编译”阶段意味着源代码正在被转换为这种内部数据结构。那时,语法也会被验证,语法错误将阻止页面执行。

通常,PHP 必须对每个请求进行此解析。这使得 PHP 有点慢。但是,您可以使用 http://php.net/manual/en/book.apc.php 来缓存已解析的代码,这样可以避免每次都重新解析,从而显着提高速度。

此外,还有各种 PHP 实现实际上将 PHP 源代码编译为字节码或本机代码。从我看到的性能信息来看,编译对速度没有太大影响,但它确实(在 Facebook 的编译器的情况下)显着减少了 RAM 消耗。

于 2012-08-29T06:20:35.950 回答