72 votes

Utilisation de mots clés dans les fonctions PHP

Double Possible:
En Php 5.3.0 qu'est-ce que la Fonction “Utiliser” Identifiant ? Si un sane programmeur utiliser?

J'ai été d'examiner les Fermetures en PHP et c'est ce qui a pris mon attention:

public function getTotal($tax)
    {
        $total = 0.00;

        $callback =
            function ($quantity, $product) use ($tax, &$total)
            {
                $pricePerItem = constant(__CLASS__ . "::PRICE_" .
                    strtoupper($product));
                $total += ($pricePerItem * $quantity) * ($tax + 1.0);
            };

        array_walk($this->products, $callback);
        return round($total, 2);
    }

Et quelqu'un merci de me donner une explication sur l'utilisation de l' use dans le présent code.

function ($quantity, $product) use ($tax, &$total)

Quand je fais une recherche use en PHP, il trouve en use mot-clé où il est utilisé dans les espaces de noms, mais ici, c'est différent.

Merci.

105voto

Francois Deschenes Points 15809

L'utilisation de l ' "utilisation" est correct dans ce cas.

Avec les fermetures, pour accéder à des variables qui sont en dehors du contexte de la fonction, vous devez explicitement l'octroi d'une autorisation de la fonction à l'aide de l'utilisation de la fonction. Ce que cela signifie dans ce cas, c'est que vous êtes à l'octroi de la fonction d'accès à la somme de l'impôt et $total des variables.

Vous aurez remarqué que $d'impôt a été transmis en tant que paramètre de la getTotal fonction alors que le montant a été fixé juste au-dessus de la ligne où la fermeture est définie.

Une autre chose à souligner est que de $d'impôt est passé comme une copie alors que $total est passé par référence (en ajoutant le signe & devant). Le passage par référence permet la fermeture de modifier la valeur de la variable. Toute modification de la valeur de $d'impôt dans ce cas, ne sera efficace que dans la fermeture alors que la valeur réelle de $au total.

15voto

hobbs Points 71946

Lorsque vous déclarez une fonction anonyme en PHP, vous devez lui dire quelles sont les variables à partir environnant les étendues (le cas échéant) il doit la fermer plus - ils ne pas fermer automatiquement sur une portée lexicale des variables qui sont mentionnés dans le corps de la fonction. La liste après l' use est tout simplement la liste des variables à proximité.

2voto

Yuri Stuken Points 2347

Cela signifie que votre fonction interne peut utiliser les variables $d'impôt et le montant de l'extérieur de la fonction, non seulement de ses paramètres.

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