Как избавиться от проверок аргументов?
Передавать аргументы массивом через compact, в функции проверять в цикле, если все ок - извлекать через extract
1. Выкинуть лишние проверки из функции
2. Заставить PHP кидать Exception, а не waning'и. Примернно так:set_error_handler(function ($severity, $message, $file, $line) {
    if (!(error_reporting() & $severity)) {
        return;
    }
    throw new ErrorException($message, 0, $severity, $file, $line);
});
3. В удобном месте поставить обаботку Exception'овtry {
   // do something
   send($id, $parentId, $name, $data)
} catch (\Throwable $e) {
    // handle error
};