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 enuse
mot-clé où il est utilisé dans les espaces de noms, mais ici, c'est différent.Merci.
Réponses
Trop de publicités?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.
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é.