fenom icon indicating copy to clipboard operation
fenom copied to clipboard

Доступ к свойствам объектов с дефисами или числовым свойствам

Open aaaatpdev opened this issue 7 years ago • 3 comments

Нет доступа к свойству объекта через $obj->{'some-property'}.

Например, в сниппете:

$obj = new \StdClass();
$obj->{1} = 'test1';
$obj->{'property-with-hyphen'} = 'test2';

И при выводе:

{$obj->{'1'}}
{$obj->{'property-with-hyphen'}}

Получается ошибка Unexpected token '{' in expression in ... line 1773, near '{$obj->{'

aaaatpdev avatar Jul 20 '17 03:07 aaaatpdev

Да, такой возможности нет и пока не планируется. Добавте геттеры через ArrayAcces что бы можно было как с массивом работать

bzick avatar Jul 24 '17 12:07 bzick

Для гибкости было бы неплохо. Свойства с дефисами можно преобразовывать в свойства с нижними подчеркиваниями:

function replaceDashes (&$obj) {
  $vars = get_object_vars($obj);
  foreach ($vars as $key => $val) {
    if (strpos($key, "-") !== false) {
      $newKey = str_replace("-", "_", $key);
      $obj->{$newKey} = $val;
      unset($obj->{$key});
    }
  }
}

Источник: https://stackoverflow.com/questions/1436166/php-replace-dashes-in-object-variables-with-underscores/1436187#1436187

aaaatpdev avatar Jul 25 '17 02:07 aaaatpdev

Добавлю в следующей версии

{$object->"some-prope+rty"}

bzick avatar Aug 01 '17 08:08 bzick