Задать вопрос
warexs
@warexs

При переходе с 5.6 на 7 php начал выдавать Function name must be a string как изменить код?

Код из темы для wp, для которой давно нет обновлений.
$out .= $this->$value['type']( $value );

PHP Fatal error: Uncaught Error: Function name must be a string in C:\OpenServer\domains\fra\wp-content\themes\im-startup\framework\admin\classes\shortcode-generator.php:140
Stack trace:
#0 C:\OpenServer\domains\fra\wp-admin\includes\template.php(1343): missShortcodeMetaBox->show(Object(WP_Post), Array)
#1 C:\OpenServer\domains\fra\wp-admin\includes\post.php(2262): do_meta_boxes(Object(WP_Screen), 'normal', Object(WP_Post))
#2 C:\OpenServer\domains\fra\wp-admin\edit-form-blocks.php(409): the_block_editor_meta_boxes()
#3 C:\OpenServer\domains\fra\wp-admin\post.php(179): include('C:\\OpenServer\\d...')
#4 {main}
thrown in C:\OpenServer\domains\fra\wp-content\themes\im-startup\framework\admin\classes\shortcode-generator.php on line 140
  • Вопрос задан
  • 813 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 3
PHP до 7 версии интерпретировала подобные вырожения как: $this->{$value['type']}( $value ). Начиная с 7 версии и выше - ($this->$value)['type']( $value ).
Используйте явный синтаксис(фигурные скобки), чтобы код выполнялся как в 5 версии. Пример
Ответ написан
Комментировать
iNickolay
@iNickolay
$functionName = $this->$value['type'];
$out .= $functionName($value)
Ответ написан
Комментировать
irishmann
@irishmann
Научись пользоваться дебаггером
--> Миграция с PHP 5.6.x на PHP 7.0.x <-- Читаем внимательно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы