Function = $this->CreateCallback($function); } /** * Создает замыкание из переданного значения * * @param string|array|null $callbackData Данные для создания колбэка * * @return Closure|null */ private function CreateCallback (string|array|null $callbackData): ?Closure { // Если передан null if ($callbackData === null) // - возвращаем null return null; // Если передана строка - считаем это именем статического метода if (is_string($callbackData)) // - создаём замыкание и возращаем его return static fn (mixed $value1, mixed $value2): bool => call_user_func($callbackData, $value1, $value2); // Если передан массив [класс, метод] if (is_array($callbackData)) { // - разбираем его [$class, $method] = $callbackData; // - создаём замыкание и возращаем его return static fn (mixed $value1, mixed $value2): bool => call_user_func([$class, $method], $value1, $value2); } // В случае ошибки возвращаем null return null; } }