php - 什么是更好的 stdClass 或(对象)数组来存储相关数据?

标签 php oop object

很长一段时间以来,我一直在使用数组来存储相关字段。如果我想拥有相关的用户字段,我使用了:

$user = array(
   'id' => 27
   'name' => 'Pepe'
);

但最近,我一直在处理对象,我更喜欢使用 $user->id 而不是 $user['id']。

我的问题:要实现面向对象的风格,您可以使用 stdClass:

$user = new stdClass();
$user->id = 27;
$user->name = 'Pepe';

或者从一个数组中转换

$user = (object) array(
  'id' => 27
, 'name' => 'Pepe'
);

按性能和风格的顺序,其中一个比另一个更好,还是您可以模糊地使用您想要的任何东西?

谢谢!

更新: 我同意所有评论,这根本不是 OOP,只是将相关数据分组到一个结构中。我的 $user 示例不是最好的,因为它是使用具有方法、属性、blablabla 的类的典型示例...我问是因为我有很多配置结构,例如“initTable”,我想要类似的东西:

$table => page => init => 1
               => end  => 25
          sort => field => name
               => order => asc

等等,我想知道什么是更好的初始化页面:

$table->page->init **OR** $table['page']['init']

最佳答案

基于小型测试 (http://phpfiddle.org/lite/code/cz0-hyf),我可以说使用“new stdClass()”比其他选项慢大约 3 倍。

这很奇怪,但是与 stdClass 相比,转换数组的效率非常高。

但是这个测试只测量执行时间。它不计量内存。

附言我使用 phpFiddle 只是为了共享代码。测试是在我的本地 PC 上完成的。

关于php - 什么是更好的 stdClass 或(对象)数组来存储相关数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18640607/

相关文章:

ruby - 当父类的方法访问子类的常量时怪癖

python - 如何在不实例化的情况下复制类属性

java - 如何有效的使用静态方法?

xcode - 访问正在加载 sqlite 数据的我的 NSArray 对象时遇到问题

php - 如何通过谷歌分析知道有多少收件人打开了电子邮件?

php - HTML 到 PDF WordPress

java - 如何识别对象数组中对象的类型?

php - 我的对象包含自身的多个实例,我应该担心吗?

javascript - jQuery ajax 在每个/任何 ajax 请求的数据中添加更新的变量

java - 签名问题 --- openssl_sign