Как обратиться к свойству объекта заведомо не зная этого свойства? Как обратиться к item по шаблонуforeach ($model as $item){
for ($i = 0; $i catalog->name и тд.
$data[] = $item->$pattern[$i];
}
}
вот что передается writeFromModel($model, [
"catalog->name",
"catalog->article"
]);
и в name должен быть массив из name, arcticel
в такой реализации выдает ошибку "Array to string conversion"
возможно ли подобное реализовать на php? и как?

2 Апр 2021 в 19:59
178 +1
0
Ответы
1

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

Вот как можно изменить ваш код для обращения к свойствам объекта по шаблону:

foreach ($model as $item){
$itemData = [];
foreach ($pattern as $property){
$properties = explode("->", $property);
$tempItem = $item;
foreach ($properties as $prop){
if (is_object($tempItem)) {
$tempItem = (array) $tempItem;
}
if (is_array($tempItem)) {
$tempItem = (object) $tempItem;
}
$tempItem = $tempItem->$prop;
}
$itemData[] = $tempItem;
}
$data[] = $itemData;
}

В этом примере мы разбиваем путь к свойству объекта на части, преобразуем объект в массив, обращаемся к свойству и сохраняем его значение в массив $itemData.

Надеюсь, это поможет вам решить проблему с обращением к свойствам объекта по шаблону.

17 Апр в 19:41
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 89 779 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир