我有一个定制的 MVC PHP 框架,我正在重写它并且对性能和魔术方法有疑问。对于框架的模型部分,我在想如果 __get
/__set
魔法方法会导致太多的性能损失而不值得使用。我的意思是访问(读取和写入)模型数据将成为最常见的事情之一。 __get
/__set
魔术方法的使用是否对重度使用功能(如 MVC 框架的模型部分)的性能影响太大?
最佳答案
测量它。
它肯定会对性能造成很大影响,尤其是考虑到函数调用在 PHP 中的开销很大。在下一个版本的 PHP 中,这种差异会更大,它实现了优化,可以显着更快地定期访问已声明的实例属性。
也就是说,PHP 很少是瓶颈。 I/O 和数据库查询通常需要更多时间。但是,这取决于您的使用情况;确定基准的唯一方法。
这也是魔术方法的其他可读性问题。它们经常退化为一个大的 switch
语句并损害代码完成,这两者都可能会影响编程效率。
关于php - __get/__set/__call PHP性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330852/