Как обратиться к свойству объекта заведомо не зная этого свойства? Как обратиться к 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
201 +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 Апр 2024 в 19:41
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир