PHP:更改对象属性的顺序

时间:2017-05-26 11:43:35

标签: php object-properties

关于PHP,有没有办法改变对象属性的顺序?

class o {public $a = 1, $b = 2;}
$o = new o;
foreach (get_object_vars($o) as $k => $v) {
  print $k . '->' . $v . PHP_EOL;
}

输出:

a->1
b->2

现有的公共变​​量可以是unset(),例如添加与$o->c = 3;。但是array functions不能用于对象,我不想将对象转换为某个stdClass。

我能想到的唯一实用的解决方法是装饰数组对象并重载神奇的__get()__set()方法,但这只是一种解决方法,而不是解决方案。

1 个答案:

答案 0 :(得分:2)

只需实现Iterator interface,就可以实现自己的迭代方式。通过实现next和current方法,您可以定义如何获取当前元素以及如何获取下一个元素(但是您必须实现所有方法)。

对于迭代使用

foreach ($o as $k => $v) {
  print $k . '->' . $v . PHP_EOL;
}

注意看一些例子?您是否从上面的链接中了解到它?

另一方面,如果您想将对象用作数组,请检查ArrayObject interface或简化使用ArrayAccess interface