我什么时候应该使用stdClass,什么时候应该在php oo代码中使用数组?
在一个大规模重构的工作时期,我希望引入stdClass *****作为从函数返回数据的一种方式,我试图找到非主观的论据来支持我的决定。
是否有任何情况最好使用一个而不是另一个?
使用stdClass而不是数组有什么好处?
有人会说,函数必须尽可能小且具体,才能返回一个值。我决定使用stdClass是暂时的,因为我希望从长远来看为每个进程找到正确的值对象。
在一个大规模重构的工作时期,我希望引入stdClass *****作为从函数返回数据的一种方式,我试图找到非主观的论据来支持我的决定。
是否有任何情况最好使用一个而不是另一个?
使用stdClass而不是数组有什么好处?
有人会说,函数必须尽可能小且具体,才能返回一个值。我决定使用stdClass是暂时的,因为我希望从长远来看为每个进程找到正确的值对象。
通常的方法是
返回具有固定分支的已定义数据结构时使用对象:
$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在何时使用对象(验证,类型检查和将来的方法)方面提出了许多很好的观点。
恕我直言,使用来实现与数组相同的功能并不是很有用,它只是增加了对象的开销,没有任何实际的好处。您还错过了许多有用的数组函数(例如 )。您至少应该创建自己的类以启用类型检查,或者向对象添加方法以使其值得使用对象。stdClass
array_intersect