Переписываем анонимные функции PHP

Admin PHP, WordPress

В новых версия PHP create_function является устаревшей функцией (deprecated). Будет дан пример по переписыванию такой функции.

create_function функция является небезопасной из-за того что она вызывает внутри себя функцию eval().

Будем менять её на примере одного из плагинов в WordPress

Смотрим участок, видим там create_function:

if (!empty($tags)) {
    $post_tags = '[' . implode(', ', array_map(
        create_function('$v', 'return "\'" . urlencode(substr($v, strpos($v, \'_\') + 1)) . "\'";'), $tags)) . ']';
} else {
    $post_tags = '[]';
}

Вот этот:

create_function('$v', 'return "\'" . urlencode(substr($v, strpos($v, \'_\') + 1)) . "\'";')

Переписываем его

   $ploshadka = function($v) {
        $strop = strpos($v, '_');
        $substr = substr($v, $strop + 1);
        return urlencode($substr);
    };

Было

Стало

Ошибка в плагине codecolorer

Fatal error: Uncaught Error: Call to undefined function create_function()
in /wp-content/plugins/codecolorer/lib/geshi.php on line 4704

Для исправления перепишем эту функцию:

$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');

На эту:

$callback_2 = function($matches) {
    return "[" . str_replace("|", "", $matches[1]) . "]";
};

English Query (запросы по теме на английском языке)

create_function deprecated

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Переписываем анонимные функции PHP"