Попробуйте
$this->${$unitprefix.'year'} = '';
Но, чтобы дать лучший совет, было бы хорошо узнать свойства вашего класса и то, что содержит $unitprefix
.
Ссылка: Переменные
Для более подробной информации:
Ваш код не понятен парсеру так, как вы его пишете. Если предположить $unitprefix = 'foo'
, ваш код можно интерпретировать двумя способами:
Получите значение $this->$unitprefix
, т.е. $this->foo
и добавьте 'year'
. Тогда ваш код приведет к (с $this->foo = bar
):
'baryear' = '';
Я думаю, это то, что делает парсер, поскольку это соответствует оценке кода слева направо.
Добавьте 'year'
к $unitprefix
и получите свойство с результирующим именем, то есть результирующий код:
$this->fooyear = '';
Второй - это beviour, который вы хотите иметь, но без ${}
парсер не знает, что делать.