Посредством 'preg_replace_callback' можно вызывать метод с дополнительным аргументом только таким способ, который считается неэстетичным?

Существует ли другой способ передать аргумент $foo в метод method_name, помимо использования preg_replace_callback?
  • 2 октября 2023 г. 15:27
Ответы на вопрос 2
Да, используя анонимные функции, можно передать аргумент $foo напрямую в метод method_name без использования preg_replace_callback. Вместо этого можно использовать функции preg_replace_callback_array или array_map, которые также позволяют вызывать анонимные функции с дополнительными аргументами. Вот пример использования array_map:

```php
function method_name($match, $foo) {
    // Ваш код метода
}

$foo = 'some value';
$string = 'some string';
$result = array_map(function($match) use ($foo) {
    return method_name($match, $foo);
}, array($string));

print_r($result);
```

Этот код вызовет метод method_name для каждого элемента в массиве array($string), передавая ему и совпавшую строку, и аргумент $foo.
Начиная с PHP 7.4, можно использовать стрелочные функции для замены с использованием preg_replace_callback(). Вот как это выглядит:

preg_replace_callback(
    $regex,
    fn($matches) => $this->method_name($matches[0], $foo),
    $html
);
Похожие вопросы