新的PHP首要版别PHP8估计将于2020年底发布。
它现在正处于十分活泼的开发中,所以在接下来的几个月里,开发速度和开发进程或许会有很大的改动。
在这篇文章中,我会罗列出PHP8中会发作的一些改动:新功能、性能改善和突破性改动。
由于PHP8是一个新的首要版别,所以代码及语法向下兼容性会更低。
假如您一向坚持与最新版别坚持同步,那么升级应该不会太难,由于大多数突破性的更改在7.*版别中都已弃用。
除了突破性的改动,PHP8还带来了一些不错的新特性,比方JIT编译器和uniontypes,当然还有其它更多的特性。
新特性
从新特性开端说起,可是PHP8仍在积极开发中,因而这个清单将跟着时间的推移而增长。
联合类型(Uniontypes)RFC
考虑到PHP的动态类型特性,联合类型在许多情况下都很有用。
联合类型是两个或多个类型的调集,这些类型指示能够运用这两个类型中的任何一个。
1
publicfunctionfoo(Foo|Bar i n p u t ) : i n t ∣ f l o a t ; 我 怎 么 感 觉 这 个 和 C 语 言 里 的 联 合 体 有 点 类 似 。 请 注 意 , v o i d 永 远 不 能 是 联 合 类 型 的 一 部 分 , 由 于 它 表 明 “ 根 本 没 有 回 来 值 ” 。 此 外 , 能 够 运 用 ∣ N U L L 或 运 用 现 有 的 ? 。 p u b l i c f u n c t i o n f o o ( F o o ∣ n u l l input):int|float; 我怎么感觉这个和C语言里的联合体有点类似。 请注意,void永远不能是联合类型的一部分,由于它表明“根本没有回来值”。 此外,能够运用|NULL或运用现有的?。 publicfunctionfoo(Foo|null input):int∣float; 我怎么感觉这个和C语言里的联合体有点类似。 请注意,void永远不能是联合类型的一部分,由于它表明“根本没有回来值”。 此外,能够运用∣NULL或运用现有的?。 publicfunctionfoo(Foo∣nullfoo):void;
publicfunctionbar(?BarKaTeX parse error: Expected '}', got 'EOF' at end of input: … privateWeakMapcache;
publicfunctiongetSomethingWithCaching(objectKaTeX parse error: Expected '}', got 'EOF' at end of input: …ct { returnthis->cache[ o b j ] ? ? = obj] ??= obj] ??=this->computeSomethingExpensive(KaTeX parse error: Expected 'EOF', got '}' at position 9: obj); }̲ } 能够在目标上运用…foo=newFoo();
var_dump( f o o : : c l a