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;, Но функции массива не работают с объектами, и я не хочу преобразовывать объект в некоторый stdClass.

Единственный практический обходной путь, который я могу придумать, — это украсить объект массива и перегрузить магию. __get() а также __set() методы, но это всего лишь обходной путь, а не решение.

2

Решение

Вы можете реализовать свой собственный способ перебора объекта, просто внедрив Интерфейс итератора. Реализуя методы next и current, вы определяете, как получить текущий элемент и как получить следующий (но вам нужно будет реализовать все методы).

Для итерации

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

Хотите увидеть пример? Вы поняли это по ссылке выше?

С другой стороны, если вы хотите использовать свой объект в качестве массива, проверьте Интерфейс ArrayObject или для более простого использования Интерфейс ArrayAccess

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]