HHVM 4.26.0 发布,结束对 4.20 的支持

by admin on 2020年2月10日

HHVM 4.26.0 公布了,此版本标识着对 4.20 的扶持终止。4.21-4.25 仍受支持,
LTS 版本 3.30 和 4.8 相似如此。

HHVM 4.27.0 公布了,此版本标记着对 4.21 的支撑终止。4.22-4.26 仍选用帮衬助,
LTS 版本 3.30 和 4.8 肖似如此。

此版本更新亮点如下:

相距在Instagram担当程序员的无非2个月时间,笔者就很纳闷,外面的世界看上去照旧疑似在二零零六年的时候那么写
PHP。

此版本更新亮点如下:

  • 各样 IDE 集成修改(更加好的全自动完结成效,更加多关于甘休的上下文音信)
  • 动态类型的值现在得以在更加多地点采用(在 XHP 内部,未安装的讲话)
  • 宣称二个与其所在类具备同等名称的措施不再是二个 Hack 错误(早前是
    error 3007,它是为防范混淆而增多的,因为那一个宗意在 4.0 以前的
    HHVM版本中担纲布局函数)
  • 现今,当存在未到位的预备好的言辞时关闭 SQLite
    连接,将配备今后再关闭连接,并不是回到错误
  • 本着联合项目(Cat | Dog)和交点类型(FourLegged &
    Mammal)增多了实验性新语法,那是三个开始时代的尝试原型,不适合日常选取,即使要进行考试,请将
    union_intersection_type_hints=true 添加到 .hhconfig 中

诚如大家一向没听过 Hack、 HHVM、 XHP 等等,大家依旧在代码里大批量选拔require(卡塔尔国 和 include(卡塔尔(قطر‎ 语句。差非常的少了。

  • 当函数未在颇有支行中显式重返值时,现身更清晰的 typechecker 错误音讯
  • 为依照 LSP 的编辑器中的覆盖措施增加了“跳转到定义”(比如 Visual
    Studio 代码)
  • 现行反革命,在平凡状态下,能够在依附 LSP 的编辑器中达成转到完成(“
    textDocument/implementation”)

更新表明:

自己如故以为 PHP 是一门写前端接收的手不释卷语言(业务逻辑和 API
层卡塔尔(قطر‎,但独有当您使用了以下它的今世优势时,这一说法才树立:

创新表明:

HHVM 是由 Instagram 塑造的 PHP 虚构机,它经过将 PHP
代码动态翻译成原生机器码而急剧进步速度。HHVM 援助 PHP 和 PHP 方言 哈克语言,但从 4.0 版本初步,仅支持 Hack 语言。

图片 1

HHVM 是由 Instagram 塑造的 PHP 虚构机,它通过将 PHP
代码动态翻译成原生机器码而大幅度升高速度。HHVM 支持 PHP 和 PHP 方言 Hack语言,但从 4.0 版本起先,仅扶植 Hack 语言。

(文/开源中华夏儿女民共和国卡塔尔(قطر‎    

1. Hack

(文/开源中夏族民共和国卡塔尔国    

打出你的变量:

说真的,PHP 最大的标题是它贫乏强类型。
变量能够是其他项目,比超级多时候那正是三个定期炸弹。

设若你只好写这么的代码:

if ($var !== null && is_int($var)) {       //... } 

那代表你可以想引用二个null变量,可能失实的变量类型。

Hack 是向 PHP 逐步增加类型信息的门道,並且它是基于 PHP 的。

若果你增添了 hack 类型提醒,它抑遏约束你的变量(富含把他们标志为大概为
null卡塔尔。比方:

class Foo {   ?int $var = null;  // ... some code ... } 

能够用在艺术具名、类性质等方面,接着它同意你通过 hh_client
检查代码里是或不是存在不当,存在就能够把品种错误高亮出来。

Hack 文书档案页面有更加多更加好的对于 Hack 类型的降解:

Async 异步

对于体面包车型客车 PHP 网址来讲,下多少个第后生可畏的超越是采纳 hack 的 async/await
关键词。

设若您未曾接触过形似天性的语言,作者来解释一下。

比如讲,你须求对数据库做 3 次函数调用,为了拿走 3
块数据。为了总计出页面想要的结果,你需求具有 3
个查询结果,但各类结果都要求 1 条不相通的 SQL 语句。

诚如你会如此写:

$data1 = querySQL1(); $data2 = querySQL2(); $data3 = querySQL3(); $result = computeResult($data1, $data2, $data3); 

好,实际上,除非你在分明的做一些帅爆了的东西,PHP
常常是在多个伸手里面单线程跑的。
那意味服务器会率先给第一条查询推行一条 SQL,等待结果,然后再施行第二条
SQL,接着再施行第三条。

这有何难点吧?这里的难点是,计算最后结出所需的时间是实行 query1、query2
和 query3 三者的时刻之和。

但大好些个数据库皆以八线程,且能够并行试行操作的。假使在这里之上,你的 DB 在
SSD 上并不是在白日做梦硬盘上施行,你就能够运用上 DB
的多核微机和并行处理技术…

万大器晚成您在查询多少个 DB 只怕五个例外的劳动,或是伏乞三个API,对你的话那风流倜傥风味也得以发挥优势。

咱俩怎么来减轻吧? 使用 async/await:

list($data1, $data2, $data3) = awaitHHAsiov(array(   querySQL1(),   querySQL2(),   querySQL3(), )); 

是这种艺术,3 条查询二回性发送并等待结果。今后收获 3
块数据的光阴便是实行耗费时间最长那条查询的时光,因为 3 条都在并行管理。

Hack 使用图表的不二等秘书籍更加好地对 async
做精晓说:

Hack 提供了对 MySQL, memcache 和 Curl 的 async
达成,所以您能够只需用它们的库替换掉你的调用就能够立刻选拔到那生机勃勃优势。

Collections:

PHP 数据,有的时候候是二个向量,有的时候候是一个辞典,临时候两个都以。

尽管你了然它里面包蕴什么,别的的程序猿不小概认为自身也掌握,但却在中间放进了不当的数据类型。

要是你曾经接收过像 C#, Java 或 C++ 那样的语言,你恐怕对 Generics 和
Collections 会以为熟稔。

Hack 引进了 Collections, 它令你钦点 Collections 里面包车型大巴数据类型。
那意味着你只是不足为训寄望于数组包蕴了你想要的值,现在您驾驭那生机勃勃构造蕴含了你想要的数据类型(字符串、整型等等State of Qatar。

在此之上,如若您还是想利用 PHP
的数组,你只须求对代码做一丝丝重构,你就足以对数组内容的门类进行那样的封锁:

class Bar { array  $vector_of_ints = array();  array  $dictionary_with_string_keys = array();  } 

接下来你如若在数组里停放了不当类型的变量,也许给数组钦点贰个字符串键,类型检查器就能抛出荒唐。

2. HHVM

哈克 带有它和谐的运作境况,如您预料的,它没办法直接运转于 Zend 的 PHP
意况。

HHVM 指 HipHop 虚构机,是在 照片墙 开荒的圣旨十分的大改正 PHP
规模化的实行复杂度难点。

HHVM 运行了全体 照片墙(Instagram卡塔尔(قطر‎和某些其余首要站点,举个例子未来的维基百科,随着时间推移,更加的申明它所拉动的大队人马质量收益。

是因为 HHVM 没有必要 Hack 提醒符也足以运行平常化的
PHP,且同样能够加快代码推行效能,所以不行使 HHVM 作为你暗中同意的 PHP
运转条件正是在萧疏钱。

比方说,当维基百科切换至 HHVM 后,平均单页加载时间压缩了抢先八分之四,CPU
的平分使用率从 百分之七十 裁减至 12%,这还是在 2 年前。自那个时候起, HHVM
团队持续进级其天性展现,所以您能够设想它现在表现越来越好了。

HHVM 在生育条件需求二个像 Apache 或 nginx 那样的 HTTP
服务器作为前端支撑,不过在开辟条件,它也能够独自作为服务器运营。

3. XHP

如果有生机勃勃件事是本人愤恨的,正是 PHP/HTML 混编。那样的代码让作者吐:

$user_name = 'Fred';  $output = "Hello $user_name"; 

更早的是,有人自作聪明,不在一个地点开闭 HTML 标签,像这么:

$user_name = 'Fred'; $output = "  Hello $user_name"; // some call to a function that takes in $output and is supposed to close the div tag $output = addTheRestOfTheSoup($output); 

于是乎你维护起来就…

图片 2

XHP 让 HTML 作为 PHP 的一流人民,因此你能够在字符串外编写 HTML,像 XHP
相仿剖析。

比如:

$user_name ='Fred'; $output = Hello $user_name; addTheRestOfTheDivContentsTo($output);  //...  function addTheRestOfTheDivContentsTo(:div $div): :div {  $div->appendChild("We come in peace");  return $div; } 

如你所见, XHP
相似威迫标签相配,也等于说开标签有相应的闭标签,且以卓绝的依次举行开闭。

XHP 相仿管理字符串变量的 escape,幸免 HTML/JS
踏向页面包车型客车客户内容中,堤防网址遭逢该攻击矢量的抨击。

你还是可以为您本人创制自定义的 XHP
类,譬喻“自定义的HTML标签”来复用你的代码库,比如实现能够自行在 推特页面增加链接的法力,以至用二个标签来渲染整个页面头部。

越来越多关于 XHP 的文书档案:

再有越来越多 …

上述介绍了 HHVM、Hack 和 XHP 的根底,下一次本身希望介绍一下装置 HHVM
的支出条件,基于 HHVM
的类活动加载、函数和常量,还应该有基本功的调节器框架,路由 web 诉求。

【编辑推荐】

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图