Я унаследовал проект, который был создан с Yii2, вер.2.0.4, с задачей обновить указанный проект до более новой версии Yii2 (2.0.15) из-за несовместимости более старой версии с PHP 7.2 +.
Я заметил, что есть многоиспользование присвоения массивов модели:
$model->_attributes = $array;
В новой версии это приводит к исключению
'yii\base\UnknownPropertyException' with message 'Setting unknown property: app\models\model::_attributes'
В настоящее время я создал обходной путь со следующей функцией:
function customSetAttributes(&$model, $array) {
foreach($model->attributeLabels() as $model_key => $model_label) {
if(!isset($array[$model_key])) continue;
$model->$model_key = $array[$model_key];
}
}
Кроме того, функция получения теперь имеет похожую проблему.
Что я хотел бы знать:
- Был ли этот тип назначения никогда не предназначался в первомместо (а я просто не нашел предыдущий код разработчика, который это позволяет)?Я пролистал список изменений Yii2, но не заметил ничего связанного с ним.
- Есть ли способ «спасти» предыдущее поведение, чтобы мне не приходилось заменять каждый случай моей обходной функцией?