qa

Transférer func_get_args vers une autre fonction en PHP

Publie le 29 décembre 2025 Derniere mise a jour 30 décembre 2025

Introduction

## Transmission des arguments collectés par func_get_args à une autre fonction en PHP

Besoin de transmettre les arguments collectés par func_get_args à une autre fonction en PHP ? Ce guide démontre une technique simple et efficace utilisant call_user_func_array. Vous apprendrez comment exploiter les fonctions variadiques de PHP et la transmission d'arguments pour créer un code plus flexible et réutilisable. Nous allons décomposer le processus étape par étape, en veillant à ce que vous compreniez comment transmettre un nombre arbitraire d'arguments à une fonction définie par l'utilisateur.

Utiliser func_get_args avec call_user_func_array

Pour transmettre un nombre illimité d'arguments d'une fonction à une autre en PHP, vous pouvez utiliser func_get_args et call_user_func_array. La fonction func_get_args collecte tous les arguments passés à la fonction initiale dans un seul tableau.

Ensuite, call_user_func_array est utilisé pour invoquer une autre fonction, en lui transmettant le tableau d'arguments obtenu à partir de func_get_args. Cela permet à la seconde fonction de recevoir et de traiter tous les arguments initialement passés à la première fonction.

Essentiellement, func_get_args rassemble les arguments, et call_user_func_array les distribue à la fonction cible.

<?php

/**
 * Calls another function with variable arguments.
 *
 * @param callable $function The function to call.
 * @param array $args An array of arguments to pass to the function.
 */
function call_another_function(callable $function, array $args) {
    // Check if the provided argument is a valid callable
    if (!is_callable($function)) {
        throw new InvalidArgumentException('The first parameter must be a callable.');
    }

    // Call the function with the provided arguments
    call_user_func_array($function, $args);
}

/**
 * Example usage of call_another_function.
 */
function my_function() {
    // Get all arguments passed to this function
    $args = func_get_args();

    // Call another function with the same arguments
    call_another_function('another_function', $args);
}

/**
 * Another example function that will be called by my_function.
 *
 * @param mixed ...$args Variable number of arguments.
 */
function another_function(...$args) {
    foreach ($args as $arg) {
        echo "$arg\n";
    }
}

// Example call to my_function
my_function('Hello', 'World', 123);
?>

La syntaxe variadique comme alternative moderne

PHP fournit un mécanisme permettant aux fonctions d’accepter un nombre arbitraire d’arguments. Pour transmettre ces arguments collectés par une fonction à une autre fonction, la fonction func_get_args() peut être utilisée. Cette fonction rassemble tous les arguments passés à la fonction appelante et les regroupe dans un tableau.

La fonction call_user_func_array() fournit ensuite un moyen d’invoquer une autre fonction définie par l’utilisateur. Elle prend deux arguments principaux : le nom de la fonction à appeler et un tableau contenant les arguments à passer à cette fonction.

Essentiellement, func_get_args() récupère les arguments, et call_user_func_array() les distribue à la fonction cible, permettant ainsi la redirection souhaitée d'un nombre illimité d'arguments.

<?php

/**
 * Calls another function with a variable number of arguments.
 *
 * @param mixed ...$args Variable length argument list to pass to another_function.
 */
function my_function(...$args) {
    call_another_function(...$args);
}

// Example usage:
my_function('arg1', 'arg2', 'arg3');

Exemples pratiques et conseils de bonnes pratiques

Pour transmettre un nombre arbitraire d’arguments d’une fonction à une autre en PHP, utilisez la fonction func_get_args() pour collecter tous les arguments dans un tableau. Ce tableau devient ensuite l’entrée pour call_user_func_array().

La fonction call_user_func_array() prend deux arguments principaux : le nom de la fonction à appeler (sous forme de chaîne de caractères) et un tableau contenant les arguments à passer à cette fonction. Le tableau d’arguments, initialement collecté par func_get_args(), est le deuxième argument de cette fonction.

Essentiellement, cette approche vous permet de créer une fonction enveloppante capable de passer dynamiquement n'importe quel nombre d'arguments à une autre fonction, sans connaître le nombre d'arguments à l'avance.

<?php

/**
 * Calls another function with provided arguments.
 *
 * @param mixed ...$args Variable length argument list to pass to another_function.
 */
function my_function(...$args) {
    // Check if any arguments are provided
    if (empty($args)) {
        error_log('No arguments provided to my_function.');
        return;
    }

    try {
        call_another_function(...$args);
    } catch (\Exception $e) {
        error_log('Error calling another_function: ' . $e->getMessage());
    }
}

/**
 * Example usage of my_function.
 */
function example_usage() {
    my_function('arg1', 'arg2', 'arg3');
}

example_usage();
?>

Conclusion

En PHP, la transmission d'arguments en utilisant func_get_args avec call_user_func_array offre une méthode flexible, bien que plus ancienne, pour passer un nombre variable d'arguments à une autre fonction. Cependant, la syntaxe variadique de PHP (...) propose une alternative plus propre et plus moderne. Comprendre les deux techniques, ainsi que les bonnes pratiques pour la gestion des arguments, permet aux développeurs de créer un code plus adaptable et plus lisible lors de la gestion de fonctions nécessitant des listes d'arguments dynamiques.

La transmission d'arguments de fonction vers l'avant est un schéma courant, et il devient encore plus puissant lorsqu'il est combiné avec les fonctions variadiques. Pour explorer comment construire des API flexibles en tirant parti de cette approche, consultez notre article sur Utilisation des fonctions variadiques PHP pour des points de terminaison d'API flexibles.

La transmission d'arguments de fonction peut devenir plus lisible grâce aux fonctionnalités modernes de PHP. Pour une exploration approfondie de l'amélioration de la clarté et du contrôle des arguments, consultez Implémenter les arguments nommés avec PHP 8.0 : Un guide pratique, qui offre une alternative puissante à la transmission d'arguments.

La transmission d'arguments de fonction peut devenir complexe lors de la gestion d'un nombre variable de paramètres. Pour des techniques plus avancées permettant de gérer les appels de fonction et la transmission de paramètres de manière réutilisable, explorez Callbacks PHP réutilisables avec call_user_func_array et Closures, qui démontre des mécanismes de callback puissants.

func_get_args call_user_func_array variadic functions PHP argument forwarding PHP functions pass arguments PHP programming func_get_args to function

Articles similaires