一尘不染

什么时候应该使用stdClass,什么时候应该在php oo代码中使用数组?

php

在工作中进行大量重构的中间,我希望引入stdClass *作为从函数返回数据的一种方式,并且我试图找到非主观论据来支持我的决定。

是否有任何情况下最好使用一种而不是另一种?

使用stdClass而不是数组有什么好处?


有人会说,函数必须尽可能少且特定,才能返回一个值。 我决定使用stdClass是暂时的,因为从长远来看,我希望为每个进程找到正确的Value
Objects。


阅读 219

收藏
2020-05-29

共1个答案

一尘不染

通常的方法是

  • 返回带有固定分支的已定义数据结构时,请使用对象:
       $person
     -> name = "John"
     -> surname = "Miller"
     -> address = "123 Fake St"
  • 返回列表时使用数组:
        "John Miller"
    "Peter Miller"
    "Josh Swanson"
    "Harry Miller"
  • 返回结构化信息列表时,使用对象数组:
        $person[0]
      -> name = "John"
      -> surname = "Miller"
      -> address = "123 Fake St"

    $person[1]
      -> name = "Peter"
      -> surname = "Miller"
      -> address = "345 High St"

对象不适合保存数据列表,因为您始终需要一个密钥来寻址它们。数组可以同时实现两个功能-容纳任意列表和数据结构。

因此,如果需要,您可以在第一个和第三个示例中对对象使用关联数组。我会说,这实际上只是样式和偏好的问题。

@Deceze在何时使用对象方面有很多好处(验证,类型检查和将来的方法)。

2020-05-29