【发布时间】:2020-07-20 19:05:20
【问题描述】:
在 php 7.4 中,我现在可以定义类属性类型:所以而不是:
class A{
/** @var string */
protected $string;
}
我现在可以做:
class A{
protected string $string;
}
那么,这样做值得吗?即,是否值得重新编写我的代码库以使用此功能?
有没有性能提升?
【问题讨论】:
-
更多的是关于数据完整性,而不是性能。这样你就可以确定一个属性总是有一个特定的类型,如果类型很重要,你就不需要对它们进行类型检查。如果有任何性能收益/损失,它们很可能可以忽略不计。
-
谢谢,我明白了,我只是想知道编译器是否进行了优化以使代码运行得更快,从功能上讲,我的 IDE 从语义上理解 $string 是一个字符串,所以如果我尝试一些愚蠢的事情,它会警告我$字符串 = $字符串 + 1;等等……
-
wiki.php.net/rfc/typed_properties_v2 - "主要的收获是,即使不使用类型化的属性也会对性能产生影响。对于应用程序,影响在 1-2% 左右。我们预计着陆前性能会有所提升,但至少有一些影响可能是无法避免的。”
-
@MagnusEriksson 谢谢,如果你回答我可以接受。干杯。
-
请注意,我的类型化/非类型化示例使用不同的代码(因为这是我试图说明的内容),结果基本上不一致。您需要对 your 服务器中的 your 代码进行基准测试,以得出与您相关的结论。老实说,我认为这不值得,我同意 Magnus 的观点:使用使您的代码更可靠或更易于维护的设计;性能权衡可能可以忽略不计。
标签: php optimization php-7.4