fenom
fenom copied to clipboard
Доступ к свойствам объектов с дефисами или числовым свойствам
Нет доступа к свойству объекта через $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->{'
Да, такой возможности нет и пока не планируется. Добавте геттеры через ArrayAcces что бы можно было как с массивом работать
Для гибкости было бы неплохо. Свойства с дефисами можно преобразовывать в свойства с нижними подчеркиваниями:
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
Добавлю в следующей версии
{$object->"some-prope+rty"}