为什么返回对象而不是数组?

12 浏览
0 Comments

为什么返回对象而不是数组?

我在WordPress中做了很多工作,我注意到更多的函数返回对象而不是数组。数据库结果返回的是对象,除非您明确要求返回数组。错误返回的是对象。在WordPress之外,大多数API会给你一个对象而不是一个数组。

我的问题是,为什么他们使用对象而不是数组?在大多数情况下,这没有太大关系,但有些情况下,我发现处理对象更加困难,不仅要处理,还要理解。是否有使用对象的性能原因?

我是一个自学的PHP程序员。我有一个文科学位。如果我错过了计算机科学的基本方面,请原谅我。 😉

admin 更改状态以发布 2023年5月24日
0
0 Comments

直到你已经在大型软件项目上工作了几年,你可能不会深入了解这个。许多新的计算机科学专业的学生会给出一个包含正确词汇(封装、功能性数据和可维护性)的答案,但是很少有人真正理解其中所有的好处。

让我们通过几个例子来说明。

  • 如果返回数组,那么要么需要提前计算所有值,要么需要返回许多小的值,然后可以从这些值构建更复杂的值。

想想一个返回WordPress文章列表的API方法。这些文章都有作者,作者有姓名、电子邮件地址,甚至可能还有自己的简历和传记。

如果你返回一个包含所有文章的数组,你只能限制自己返回一个帖子ID的数组:

[233, 41, 204, 111]

或者返回一个类似这样的大量信息的数组:

[ title: 'somePost', body: 'blah blah', 'author': ['name': 'billy', 'email': 'bill@bill.com', 'profile': ['interests': ['interest1', 'interest2', ...], 'bio': 'info...']] ]
[id: '2', .....]]

返回一个ID列表并不是很有用,因为你需要为每个ID单独调用API以获取有关该帖子的一些信息。

第二种情况则会获取比90%的时间更多的信息,并且执行更多的工作(特别是如果其中任何字段非常复杂)。

另一方面,对象可以为您提供访问所需所有信息的权限,但实际上还没有获取该信息。当使用对象时,可以在需要值之前(而不是事先)惰性地确定字段的值。

  • 数组暴露了比预期更多的数据和功能

回到返回大量数据的示例。现在,某些人可能会构建一个应用程序,迭代打印帖子数组中的每个值。如果API更新为在该帖子数组中添加一个额外的元素,则应用程序代码将会崩溃,因为它将打印一些新字段,这可能不应该打印。如果API返回的帖子数组中的项目顺序发生变化,那么也会破坏应用程序代码。因此,返回数组会创建所有可能的依赖项,而对象不会创建。

  • 功能性

对象可以在其中保存信息,从而使其能够为您提供有用的功能。例如,帖子对象可能足够聪明,可以返回前一篇或下一篇文章。数组永远无法做到这一点。

  • 灵活性

上述所有对象的好处都有助于创建更灵活的系统。

0
0 Comments

以下是我更喜欢对象的原因:

  • 对象不仅包含数据,还包含功能。
  • 对象在大多数情况下都有预定义的结构,这对于API设计非常有用。此外,你可以将属性设置为public、protected或private。
  • 对象更适合面向对象开发。
  • 在大多数IDE中,自动完成功能只适用于对象。

下面是一些阅读材料:

0