在PHP中创建自己的类时,我应该扩展stdClass


When creating my own classes in PHP should I extend stdClass?

虽然PHP中的类不需要显式扩展stdClass,但我想知道这样做是否有某种最佳实践或好处。

在声明类时是否应该扩展stdClass

如需参考,请参阅PHP中的stdClass是什么?和PHP:对象,转换为对象。

StdClass为空,因此扩展它没有任何好处。

你只是在你的__CLASS__中浪费extend

php --rc StdClass
Class [ <internal:Core> class stdClass ] {
  - Constants [0] {
  }
  - Static properties [0] {
  }
  - Static methods [0] {
  }
  - Properties [0] {
  }
  - Methods [0] {
  }
}

扩展stdClass的唯一原因是满足针对此类的类型提示——然而,永远不应该使用这样的类型提示,因为这是一个没有意义的问题。

扩展stdClass有一个有趣的用途:(stdClass的$object实例)将返回true,并且比is_object($object)快3倍。不过,我们谈论的是1微小秒的差异,不幸的是,除非你在整个项目中将其作为一项严格的政策,否则它很容易变得不连贯,因此比帮助更令人困惑。事实上,我很失望地发现PHP类默认情况下不会扩展stdClass。这对我来说很有意义。