关于PHP,有没有办法改变对象属性的顺序?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()
方法过载,但这只是一种解决方法,而不是解决方案。
我一直在使用'__invoke'但有人downvoted发布的解决方案。另一方面,不要你想那样做。 –
__invoke不应该被用于这个目的 –
请检查我的答案 - 我编辑它,并添加提及ArrayObject接口 –