【发布时间】:2017-05-26 11:43:35
【问题描述】:
关于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发布了一个解决方案,但有人反对,你不想那样做吗。 -
__invoke 不应该用于此目的
-
请检查我的答案 - 我对其进行了编辑并添加了有关 ArrayObject 接口的提及
-
也许请更具体地说明您想要实现的目标。为什么要尝试将对象用作数组?
标签: php object-properties