大家使用php7的新语法了没有?

发布于 2022-09-02 10:37:25 字数 173 浏览 23 评论 0

如 Scalar type hints 这种语法,声明函数的参数类型与返回值类型的?

function foo(int $a , $int b): int {
    return $a + $b;
}

另外使用这种写法和原来不指定类型,对于性能有何影响?有提升吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

上课铃就是安魂曲 2022-09-09 10:37:25

强类型strict_types是从PHP7开始才引入的东西,默认不开启,以后也不会默认开启,是一个很有争议性且完全不兼容PHP5的特性.
这个强类型跟性能没有任何关系,其中PHP之父Rasmus,Zend公司创始人Andi,PHP7性能方面的核心开发者Dmitry和鸟哥Laruence都投了反对票.
https://wiki.php.net/rfc/scalar_type_hints_v5
经过相当激烈的讨论后,PHP7决定引入强类型(strict types)支持.
strict_types=1无非就是约束了参数和返回值的类型,
类型对不上则返回一个Fatal error: Uncaught TypeError
而且是运行时才能感知,php -l file.php语法检查并不会提示类型错误.

<?php
declare(strict_types=1);
function foo(int $num): int {
    return $num/2;
}
foo(1); //返回值类型错误
foo(1.5); //参数类型错误
foo(2); //正常 

PHPer仍然可以用弱类型编写代码,弱类型带来的开发便捷这个优势PHP是绝不会放弃的,强类型只是多了一种选择,不喜欢,无视就好.

蔚蓝源自深海 2022-09-09 10:37:25

强类型的引入主要是正对JIT编译的,通过强类型,可以很好地优化JIT编译后程序的效率。
不过由于PHP7总体上仍然是非强类型的,鸟哥等PHP7开发参与人员在测试采用JIT技术的效果后,还是决定没有在PHP7中采用JIT技术(原因就是由于非强类型的类型推断增大的编译后程序的体积,减少了CPU命中率,反而在总体耗时上没有大幅提升)。
虽然JIT没有加入,但强类型的语法已经加入到PHP7,虽然目前来说对性能的影响还不是很大,但相信再不久的将来,随着JIT的引入,其效果会越来越明显。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文