Задать вопрос
@phpcoder81

Как создать свойство внутри метода?

Устал работать с массивом. Хочу заменить метод
public function setData(array $data):void{
  $this->data = $data;
}

на
public function setData(array $data):void{
  foreach($data as $k => $v){
    $this->$k = $v;
  }
}

1. Делают ли так?
2. Как это сделать?) Пробовал через __set, что-то не разобрался. Первый раз столкнулся с такой необходимостью.
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1. Делают ли так?
Делают, но это не хорошая практика. Во первых имеете шанс затереть какие-то настроечные данные объекта и получить непредсказуемость поведения. Во вторых, если у вас там значения из бд или другого хранилища в формате ключ-значение, лучше хранить их в отдельном поле, том же дата, но в виде stdClass, чтобы не путать их при работе с хранилищем с остальными полями, например так:
public function setData(array $data):void{
  $this->data = (object)$data;
}

в идеале у вас должен быть DTO (data transfer object), но в актив рекорд движках он обычно не используется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽