PHP: 更改对象属性的顺序
PHP: change order of 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
现有 public 个变量可以 unset()
,并添加,例如$o->c = 3;
。但是 array functions 不适用于对象,我不想将对象转换为某些 stdClass。
我能想到的唯一可行的解决方法是修饰数组对象并重载神奇的 __get()
和 __set()
方法,但这只是一种解决方法,而不是解决方案。
您可以通过实现 Iterator interface 来实现您自己的遍历对象的方式。通过实现 next 和 current 方法,您可以定义如何获取当前元素以及如何获取下一个元素(但您必须实现所有方法)。
迭代使用
foreach ($o as $k => $v) {
print $k . '->' . $v . PHP_EOL;
}
想看一些例子吗?上面的link你看懂了吗?
另一方面,如果您想将对象用作数组,请选中 ArrayObject interface or for simplier use ArrayAccess interface
关于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
现有 public 个变量可以 unset()
,并添加,例如$o->c = 3;
。但是 array functions 不适用于对象,我不想将对象转换为某些 stdClass。
我能想到的唯一可行的解决方法是修饰数组对象并重载神奇的 __get()
和 __set()
方法,但这只是一种解决方法,而不是解决方案。
您可以通过实现 Iterator interface 来实现您自己的遍历对象的方式。通过实现 next 和 current 方法,您可以定义如何获取当前元素以及如何获取下一个元素(但您必须实现所有方法)。
迭代使用
foreach ($o as $k => $v) {
print $k . '->' . $v . PHP_EOL;
}
想看一些例子吗?上面的link你看懂了吗?
另一方面,如果您想将对象用作数组,请选中 ArrayObject interface or for simplier use ArrayAccess interface