245 votes

Quelle est la signification de trois points (...) en PHP ?

Alors que j'installe Magento 2 sur mon serveur, j'ai reçu une erreur. Après avoir examiné le code, j'ai constaté qu'il y a trois points ( ... ), ce qui produit l'erreur. J'ai inclus le code que j'ai trouvé ci-dessous :

return new $type(...array_values($args));

0 votes

Empaquetage et dépaquetage des tableaux introduits en PHP 5.6

0 votes

Avez-vous vérifié la configuration requise avant d'installer : devdocs.magento.com/guides/v2.0/install-gde/

5 votes

Juste un commentaire au hasard, c'est l'opérateur de propagation en JS :)

333voto

Saumya Rastogi Points 6556

El ...$str est appelé opérateur splat en PHP .

Cette fonctionnalité vous permet de capturer un nombre variable d'arguments à une fonction, combinés à des arguments "normaux" transmis si vous le souhaitez. Le plus simple est de prendre un exemple :

function concatenate($transform, ...$strings) {
    $string = '';
    foreach($strings as $piece) {
        $string .= $piece;
    }
    return($transform($string));
}

echo concatenate("strtoupper", "I'd ", "like ", 4 + 2, " apples");
// This would print:
// I'D LIKE 6 APPLES

La liste des paramètres dans la déclaration de la fonction a la valeur ... et cela signifie en gros " ... et tout le reste doit aller dans $strings ". Vous pouvez passer 2 arguments ou plus dans cette fonction et le second et les suivants seront ajoutés aux $strings. array prêt à être utilisé.

3 votes

Merci :), pourquoi devrais-je utiliser l'opérateur SPLAT, au lieu de cela, je peux passer toutes ces chaînes dans un tableau comme deuxième argument ?

3 votes

@bikash.bilz Je vais parler pour celui qui a répondu : Je pense que c'est juste sucre syntaxique . L'opérateur splat vous évite d'entourer les arguments de [ y ] . Ce n'est pas un grand avantage, mais je trouve que c'est joli.

50 votes

Vous pouvez également saisir les paramètres variadiques. Ainsi en PHP 7.2, vous pouvez définir function myFunc($foo, string ...$bar) . Ensuite, $bar donne à votre fonction un tableau de chaînes de caractères et rien d'autre, garanti à l'exécution. Vous ne pouvez pas faire cela avec un simple paramètre de tableau.

29voto

rap-2-h Points 510

Toutes les réponses renvoient au même article de blog. En outre, voici la documentation officielle sur le sujet. listes d'arguments de longueur variable :

http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

En PHP 5.6 et plus, les listes d'arguments peuvent inclure le jeton ... pour indiquer que la fonction accepte un nombre variable d'arguments. Les arguments seront passés dans la variable donnée sous forme de tableau.

Il semble que l'opérateur "splat" ne soit pas un nom officiel, mais c'est quand même mignon !

6voto

Mahendra Points 474

Pour utiliser cette fonctionnalité, il suffit d'avertir PHP qu'il doit décomposer le tableau en variables en utilisant la fonction ... operator . Voir aquí pour plus de détails, un exemple simple pourrait ressembler à ceci :

$email[] = "Hi there";
$email[] = "Thanks for registering, hope you like it";

mail("someone@example.com", ...$email);

4voto

GhostCat Points 83269

C'est l'opérateur dit "splat". En gros, cela signifie "un nombre quelconque d'arguments". Introduit en PHP 5.6.

Voir aquí pour plus de détails.

1voto

Behrad Khodayar Points 1756

Il semble que personne ne l'ait mentionné, donc il est là pour rester [Il aidera également Google (et les autres SE) à guider les développeurs qui demandent des Paramètres de repos en PHP ] :

Comme indiqué ici il s'appelle Paramètres de repos sur JS & Je préfère ce nom significatif à cette chose splat !

En PHP, la fonctionnalité fournie par ...args s'appelle Fonctions variadiques qui a été introduit en PHP5.6. La même fonctionnalité était implémentée en utilisant func_get_args() .

Afin de l'utiliser correctement, vous devez utiliser la syntaxe des paramètres de repos, partout où cela est utile réduire le code passe-partout .

1 votes

Plus un pour aider google à trouver le paramètre Rest en PHP

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X