高性能 PHP 支持静态类型

  • Jonathan Allen
  • 孙镜涛

2013 年 5 月 30 日

话题:PHP架构

PHP+QB是一个可选的 PHP 虚拟机,它声称在性能上提供了数量级的提升。而负面影响就是它需要所有的内容都必须是静态类型,同时也对数组做了一些限制。

静态 类型声明 是通过 PHPDoc 语法的一个扩展添加的。方法需要使用“@engine qb”标记以便声明它们需要在 PHP+QB 虚拟机中执行。然后你还必须使用常用的PHPDoc语法标记返回值、参数以及全局变量的类型。本地变量需要通过 @local 标记声明。

在 PHP+QB 中,数组和常用的 PHP 数组有所区别。文档中是这样说明的:

在 PHP 中数组是非常复杂的数据容器。你可以用它存储任何内容。可以通过一个文本字符串或者一个数字引用元素。不同的元素实际上可以是同一个对象。一个数组甚至可以包含它自己。你能够使用 PHP 数组构建非常复杂的、有用的结构。然而这种能力和扩展性并非没有成本。如果使用数百万的元素,那么性能和内存负载可能会高的让人难以忍受。

相对而言,PHP+QB 中的数组是非常简单的。我们通常将它称之为 C-Array。本质上,在 PHP+QB 中,一个数组仅仅是内存中的一个大对象。它的元素按照一个挨着一个的简单方式进行存储。你仅能够通过数字索引引用它们。和正常的 PHP 不同的是,在 PHP+QB 中插入的顺序也无所谓。在 PHP+QB 中, foreach 循环中的 $array[0] 无论如何都会出现在 $array[1] 前面。

PHP+QB 中的数组可能是固定大小的也可以是动态扩容的。对于能够扩容的数组而言,如果其中的元素被移除,那么它并不会自动收缩,你需要调用 unset() 函数才能进行收缩。

该引擎支持完整范围的有符号和无符号整数类型,以及 32 位和 64 位浮点数类型。字符串由一个整数数组进行表示。尽管增加了 PHP+QB 支持标记的方法依然能够访问 $this 变量的属性,但是该引擎并不支持对象。

查看英文原文High Performance PHP with Static Typing

PHP架构