高性能PHP支持静态类型

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

\

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

\

ba4340187db0ab6dfcb31e1c9674f6f2.png

\

在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