![]() |
1
15
后期静态绑定的引入修复了PHP对象模型中的一个缺陷。这与性能无关,与语义有关。
例如,每当方法的实现不使用静态方法时,我都喜欢使用静态方法
后期的静态绑定修复了它,现在相同的代码打印“b”。
|
![]() |
2
3
静态方法(早期或后期绑定)创建紧密耦合,从而降低可测试性。您可以在PHP中创建大型程序,而不需要使用多个静态调用。对于我来说,最新的静态方法是非特性的。 编辑 回答马尔科·德马约的问题, 静态方法如何降低可测试性? 如果静态成员(数据和方法)对您来说都很明显,我很抱歉。 是 如果使用得当且无害,我指的是他们普遍滥用。 假设您有一个使用SQL数据库的Web应用程序。业务对象可以使用静态接口或通过多态性检索数据。任何一个
或
后者更容易测试(如:我想测试由此类和此类输入构造的SQL字符串是否是此类),因为创建
测试总是意味着对被测试的代码撒谎关于它的合作者,并且放弃静态接口(“DoubleColon”或“Quadridot”)意味着谎言不需要是一个巨大的手术,这是一个优点,因为被测试的代码离生产代码越远,测试结果就越没有意义。 |
![]() |
3
1
我发现需要使用后期静态绑定的地方是允许对使用phpunit进行单元测试的静态方法进行模拟。我的问题是,我不喜欢严格地修改代码以允许模拟,但我可以克服这一点。 不过,为了回答您的问题,我敢打赌,无论这带来多少性能成本,与大多数程序运行时相比,它都将是苍白的。换句话说,它不会产生显著的差异。 |
![]() |
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
![]() |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
|
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |