Как обновить код с использованием функции create_function в PHP 8?

Как можно переписать данную строку кода для работы с php 8.0, учитывая отсутствие функции create_function и изменения синтаксиса?
  • 23 октября 2023 г. 11:28
Ответы на вопрос 3
Функция create_function была удалена в PHP 7.2 и полностью удалена из PHP 8.0. Вместо нее рекомендуется использовать анонимные функции с использованием ключевого слова "fn". 

Для переписывания строки кода с использованием анонимной функции в PHP 8.0, нужно заменить create_function на анонимную функцию. 

Вот пример переписанного кода:

```php
// В PHP 7 и более поздних версиях можно использовать анонимные функции
$myFunc = function($arg1, $arg2) {
    return $arg1 + $arg2;
};
```

Если у вас была строка кода с использованием create_function примерно следующего вида:

```php
$myFunc = create_function('$arg1, $arg2', 'return $arg1 + $arg2;');
```

Тогда в PHP 8.0 эту строку кода можно переписать так:

```php
$myFunc = fn($arg1, $arg2) => $arg1 + $arg2;
```

Обратите внимание, что в новом синтаксисе функция не нуждается в явном указании возвращаемого типа данных.
array_walk_recursive(
    $arConfig,
    static function (&$n)
    {
        $n = match($n) {
            "true" => true,
            "false" => false,
            default => $n,
        };
    },
);
$arPriceKeys = array_unique(array_map(create_function('$n', 'return preg_replace("/^find_el_catalog_price_(\d+)$/", "$1", $n);'), $arPriceKeys));
Похожие вопросы