我有两个问题:
1) 范围解析运算符 ( ::
) 对于静态访问是否慢(或比->
实例化类慢)?
这个名字有点暗示它必须“解决”一个范围,所以这就是我问的原因。
2)重载呢,特别是__get()
和__set()
?
我一直在避免使用它们,因为我听说它们对性能有总体负面影响。
提前感谢您的任何答案/建议。
我有两个问题:
1) 范围解析运算符 ( ::
) 对于静态访问是否慢(或比->
实例化类慢)?
这个名字有点暗示它必须“解决”一个范围,所以这就是我问的原因。
2)重载呢,特别是__get()
和__set()
?
我一直在避免使用它们,因为我听说它们对性能有总体负面影响。
提前感谢您的任何答案/建议。
对于静态方法调用,引擎必须解析类和函数。这需要两次哈希查找。
例如,方法调用引擎只进行一次哈希查找。
所以实例方法调用比静态方法调用快一点。
__get 和 __set 具有属性查找的开销(引擎在调用 __get 或 __set 之前检查属性是否存在)加上方法调用的开销。
所以这比使用 getter 或 setter 慢两倍,比直接访问属性慢 3 或 4 倍。