Расширить массив PHP с помощью __toString()

Есть ли способ расширить собственный массив PHP с помощью функции/метода __toString()?

Я хотел бы быть в состоянии сделать

$a = array($x, $y, $z);
echo $a;

Это не должно жаловаться ни на уведомление Array to string conversion, ни на унылый вывод Array, а вместо этого делать то, что я реализую в методе __toString() массива.

(В __toString я бы сделал что-то вроде перебора массива и вызова __toString() для каждого элемента и объединения их вместе в строку, описывающую весь массив.)

(Я знаю, что это можно сделать, например, с помощью объекта-оболочки, это не вопрос. Я хочу настроить PHP на более тонком уровне.)


person raoulsson    schedule 30.01.2014    source источник
comment
Не изначально без расширения - вы можете использовать ArrayObject   -  person Mike B    schedule 30.01.2014
comment
Используйте 1_ ?   -  person Aditya    schedule 30.01.2014
comment
Использование implode() может привести к необратимым последствиям, если данные содержат метаданные csv — serialize() безопаснее. Однако для использования произвольной схемы кодирования array_reduce() может быть правильным подходом.   -  person symcbean    schedule 01.09.2018


Ответы (1)


Массивы Php не являются объектами, это упорядоченная карта. Наиболее актуальная документация, возможно, касается массивов.

Как сказал Майк, единственный способ добавить метод для работы с массивами — это использовать ArrayObject, который ближе к массиву, чем то, что вы можете найти в других языках.

Но:

ArrayObject подразумевает использование Iterator, но это OO.

person wako    schedule 30.01.2014