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

В новых версия 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);
    };

Было

Стало

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

create_function deprecated

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

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

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