Что касается 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;
, Но функции массива не работают с объектами, и я не хочу преобразовывать объект в некоторый stdClass.
Единственный практический обходной путь, который я могу придумать, — это украсить объект массива и перегрузить магию. __get()
а также __set()
методы, но это всего лишь обходной путь, а не решение.
Вы можете реализовать свой собственный способ перебора объекта, просто внедрив Интерфейс итератора. Реализуя методы next и current, вы определяете, как получить текущий элемент и как получить следующий (но вам нужно будет реализовать все методы).
Для итерации
foreach ($o as $k => $v) {
print $k . '->' . $v . PHP_EOL;
}
Хотите увидеть пример? Вы поняли это по ссылке выше?
С другой стороны, если вы хотите использовать свой объект в качестве массива, проверьте Интерфейс ArrayObject или для более простого использования Интерфейс ArrayAccess
Других решений пока нет …