Maison développement back-end tutoriel php Qu'est-ce qu'une fonction anonyme

Qu'est-ce qu'une fonction anonyme

Jan 22, 2019 am 09:23 AM
匿名函数

Fonctions anonymes

Les fonctions anonymes, également appelées fermetures, permettent de créer temporairement une fonction sans nom spécifié. La valeur la plus couramment utilisée comme argument de fonction de rappel. Bien entendu, il existe également d’autres applications.

Qu'est-ce qu'une fonction anonyme

Les fonctions anonymes sont actuellement implémentées via la classe Closure.

Exemple de fonction anonyme

<?php
echo preg_replace_callback(&#39;~-([a-z])~&#39;, function ($match) {
    return strtoupper($match[1]);
}, &#39;hello-world&#39;);
// 输出 helloWorld
?>
Copier après la connexion

Les fonctions de fermeture peuvent également être utilisées comme valeur de variables. PHP convertira automatiquement cette expression en une instance d'objet de la classe intégrée Closure. La méthode d'affectation d'un objet de fermeture à une variable est la même que la syntaxe d'affectation de variable ordinaire. Un point-virgule doit être ajouté à la fin :

Exemple d'affectation de variable de fonction anonyme

<?php
$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

$greet(&#39;World&#39;);
$greet(&#39;PHP&#39;);
?>
Copier après la connexion

Les fermetures peuvent hériter des variables de la portée parent. Toutes ces variables doivent être transmises à l’aide de la construction du langage use. À partir de PHP 7.1, de telles variables ne peuvent pas être transmises : superglobales, $this ou avoir le même nom que les paramètres.

Hériter les variables de la portée parent

<?php
$message = &#39;hello&#39;;

// 没有 "use"
$example = function () {
    var_dump($message);
};
echo $example();

// 继承 $message
$example = function () use ($message) {
    var_dump($message);
};
echo $example();

// Inherited variable&#39;s value is from when the function
// is defined, not when called
$message = &#39;world&#39;;
echo $example();

// Reset message
$message = &#39;hello&#39;;

// Inherit by-reference
$example = function () use (&$message) {
    var_dump($message);
};
echo $example();

// The changed value in the parent scope
// is reflected inside the function call
$message = &#39;world&#39;;
echo $example();

// Closures can also accept regular arguments
$example = function ($arg) use ($message) {
    var_dump($arg . &#39; &#39; . $message);
};
$example("hello");
?>
Copier après la connexion

Le résultat de la routine ci-dessus est similaire à :

Notice: Undefined variable: message in /example.php on line 6
NULL
string(5) "hello"
string(5) "hello"
string(5) "hello"
string(5) "world"
string(11) "hello world"
Copier après la connexion

Ces variables doivent être dans la déclaration d’en-tête de fonction ou de classe. L'héritage de variables de la portée parent est différent de l'utilisation de variables globales. Les variables globales existent dans une portée globale, quelle que soit la fonction en cours d'exécution. La portée parent d'une fermeture est la fonction qui définit la fermeture (pas nécessairement la fonction qui l'appelle).

Fermetures et exemples de portée :

<?php
// 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。
// 其中有一个方法用来计算购物车中所有商品的总价格,该方法使
// 用了一个 closure 作为回调函数。
class Cart
{
    const PRICE_BUTTER  = 1.00;
    const PRICE_MILK    = 3.00;
    const PRICE_EGGS    = 6.95;

    protected   $products = array();
    
    public function add($product, $quantity)
    {
        $this->products[$product] = $quantity;
    }
    
    public function getQuantity($product)
    {
        return isset($this->products[$product]) ? $this->products[$product] :
               FALSE;
    }
    
    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);;
    }
}

$my_cart = new Cart;

// 往购物车里添加条目
$my_cart->add(&#39;butter&#39;, 1);
$my_cart->add(&#39;milk&#39;, 3);
$my_cart->add(&#39;eggs&#39;, 6);

// 打出出总价格,其中有 5% 的销售税.
print $my_cart->getTotal(0.05) . "\n";
// 最后结果是 54.29
?>
Copier après la connexion

Cet article est une introduction aux fonctions anonymes. J'espère qu'il sera utile aux amis dans le besoin !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisation et caractéristiques des fonctions anonymes C++ Utilisation et caractéristiques des fonctions anonymes C++ Apr 19, 2024 am 09:03 AM

Une fonction anonyme, également appelée expression lambda, est une fonction qui ne spécifie pas de nom et qui est utilisée pour un usage unique ou pour transmettre un pointeur de fonction. Les fonctionnalités incluent : l’anonymat, l’utilisation unique, les fermetures, l’inférence du type de retour. En pratique, il est souvent utilisé pour le tri ou d’autres appels de fonction ponctuels.

Analyse des scénarios d'application de fonctions anonymes dans les fonctions Golang Analyse des scénarios d'application de fonctions anonymes dans les fonctions Golang May 16, 2023 pm 10:51 PM

En tant que langage de programmation moderne, Golang (également connu sous le nom de langage Go) possède de nombreuses fonctionnalités puissantes. Parmi elles, les fonctions anonymes sont un concept très important dans Golang et sont largement utilisées dans divers scénarios. Dans cet article, nous analyserons en profondeur les scénarios d'application des fonctions anonymes dans les fonctions Golang. Gestionnaire d'événements Dans le gestionnaire d'événements, la fonction anonyme est un outil très pratique et pratique. La logique personnalisée peut être transmise au gestionnaire d'événements via une fonction anonyme, telle que : funcmain(){bt

Comment utiliser les fonctions et fermetures anonymes de PHP7 pour obtenir un traitement logique de code plus flexible ? Comment utiliser les fonctions et fermetures anonymes de PHP7 pour obtenir un traitement logique de code plus flexible ? Oct 21, 2023 am 10:21 AM

Comment utiliser les fonctions anonymes et les fermetures de PHP7 pour obtenir un traitement logique du code plus flexible ? Avant PHP7, nous utilisions souvent des fonctions pour encapsuler un élément logique spécifique, puis appelions ces fonctions dans le code pour implémenter des fonctions spécifiques. Cependant, nous pouvons parfois avoir besoin de définir des blocs logiques temporaires dans le code. Ces blocs logiques n'ont pas besoin de créer une fonction indépendante et, en même temps, nous ne voulons pas introduire trop de variables globales dans le code. PHP7 introduit des fonctions et des fermetures anonymes, qui peuvent très bien résoudre ce problème. Une fonction anonyme est une fonction sans nom

Les fonctions anonymes Golang peuvent-elles renvoyer plusieurs valeurs ? Les fonctions anonymes Golang peuvent-elles renvoyer plusieurs valeurs ? Apr 13, 2024 pm 04:09 PM

Oui, les fonctions anonymes du langage Go peuvent renvoyer plusieurs valeurs. Syntaxe : func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//Function body}. Utilisation : utilisez l'opérateur := pour recevoir la valeur de retour ; utilisez le mot-clé return pour renvoyer plusieurs valeurs.

Fonctions anonymes en PHP8.0 Fonctions anonymes en PHP8.0 May 14, 2023 am 08:31 AM

PHP8.0 est la dernière version du langage de programmation PHP. Une mise à jour importante concerne les améliorations et améliorations des fonctions anonymes. Une fonction anonyme (également appelée fermeture) est un type spécial de fonction qui peut être créée dynamiquement au moment de l'exécution et transmise à d'autres fonctions ou stockée dans une variable. En PHP, les fonctions anonymes sont cruciales pour la programmation avancée et le développement Web. PHP8.0 fournit de nouvelles syntaxes et fonctionnalités qui rendent les fonctions anonymes plus flexibles et plus faciles à utiliser. Certaines des mises à jour sont les suivantes : Déclarations de type pour les paramètres de fonction dans PHP8.0,

Expressions Python Lambda : abrégées, concises, puissantes Expressions Python Lambda : abrégées, concises, puissantes Feb 19, 2024 pm 08:10 PM

Les expressions pythonLambda sont un outil puissant et flexible pour créer du code concis, lisible et facile à utiliser. Ils sont parfaits pour créer rapidement des fonctions anonymes qui peuvent être transmises comme arguments à d'autres fonctions ou stockées dans des variables. La syntaxe de base d'une expression Lambda est la suivante : lambdaarguments:expression Par exemple, l'expression Lambda suivante ajoute deux nombres : lambdax,y:x+y Cette expression Lambda peut être transmise à une autre fonction en tant qu'argument comme suit : defsum( x ,y):returnx+yresult=sum(lambdax,y:x+y,1,2)Dans cet exemple

Expressions Python Lambda : faciliter la programmation Expressions Python Lambda : faciliter la programmation Feb 19, 2024 pm 09:54 PM

Une expression Python Lambda est une petite fonction anonyme qui stocke une expression dans une variable et renvoie sa valeur. Les expressions Lambda sont souvent utilisées pour effectuer des tâches simples pouvant être accomplies en écrivant une fonction distincte, mais les expressions Lambda peuvent rendre le code plus concis et plus lisible. La syntaxe d'une expression Lambda est la suivante : lambdaarguments : expressionarguments est la liste de paramètres reçue par l'expression Lambda, et expression est le corps de l'expression Lambda, qui contient le code qui doit être exécuté. Par exemple, l'expression Lambda suivante ajoute deux nombres et renvoie leur somme : lambdax,

Comment utiliser les fonctions et fermetures anonymes de PHP7 pour obtenir une logique de code plus flexible et réutilisable ? Comment utiliser les fonctions et fermetures anonymes de PHP7 pour obtenir une logique de code plus flexible et réutilisable ? Oct 24, 2023 am 10:30 AM

Comment utiliser les fonctions et fermetures anonymes de PHP7 pour obtenir une logique de code plus flexible et réutilisable ? Dans le monde de la programmation PHP, les fonctions anonymes et les fermetures sont des outils très précieux et puissants. PHP7 introduit de nouvelles fonctionnalités de langage qui rendent l'utilisation de fonctions anonymes et de fermetures plus pratiques et flexibles. Cet article présentera comment utiliser les fonctions et fermetures anonymes de PHP7 pour obtenir une logique de code plus flexible et réutilisable, et fournira quelques exemples de code spécifiques. 1. Fonction anonyme Une fonction anonyme est une fonction sans nom. En PHP, vous pouvez utiliser anonyme

See all articles