Все, у меня есть класс с некоторыми переменными, определенными вверху, например:
var $conditionStyle = '';
Позже я могу оформить одну вещь как это:
$this -> conditionStyle = 'someStyle';
Или несколько вещей, как это:
$this->conditionStyle[$this->styleRowsCount] = 'someStyle';
Далее я бы посмотрел, был ли conditionStyle массивом или нет:
if(is_array($this-> conditionStyle) {...}
В php 7.0 и ранее это оценивалось нормально. С 7.2 я должен использовать settype()
или это не в состоянии оценить правильно. Это проблема с 7.2 или 7.2 исправил недостаток в предыдущих версиях?
PHP 7.1 изменил поведение этого кода:
$x = '';
$x[3] = 'foo';
В < 7,1, $x
является:
array (
3 => 'foo',
)
в то время как в> = 7.1, это:
string ' f'
Смотрите это онлайн на 3v4l.org.
Это изменение плохо упоминается в Замечания к выпуску PHP 7.1:
Пустой оператор индекса больше не поддерживается для строк
Применение пустого индекса к строке (например, $ str [] = $ x) приводит к фатальной ошибке, а не к автоматическому преобразованию в массив.
PR, который сделал это изменение, также имел побочные эффекты, которые вы заметили, и как кто-то еще прокомментировал в разделе заметок этой страницы.
Вы должны инициализировать вашу переменную в массив с самого начала, чтобы работать во всех версиях.
Других решений пока нет …