大家使用php7的新语法了没有?
如 Scalar type hints 这种语法,声明函数的参数类型与返回值类型的?
function foo(int $a , $int b): int {
return $a + $b;
}
另外使用这种写法和原来不指定类型,对于性能有何影响?有提升吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
强类型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语法检查并不会提示类型错误.
PHPer仍然可以用弱类型编写代码,弱类型带来的开发便捷这个优势PHP是绝不会放弃的,强类型只是多了一种选择,不喜欢,无视就好.
强类型的引入主要是正对JIT编译的,通过强类型,可以很好地优化JIT编译后程序的效率。
不过由于PHP7总体上仍然是非强类型的,鸟哥等PHP7开发参与人员在测试采用JIT技术的效果后,还是决定没有在PHP7中采用JIT技术(原因就是由于非强类型的类型推断增大的编译后程序的体积,减少了CPU命中率,反而在总体耗时上没有大幅提升)。
虽然JIT没有加入,但强类型的语法已经加入到PHP7,虽然目前来说对性能的影响还不是很大,但相信再不久的将来,随着JIT的引入,其效果会越来越明显。