Explication détaillée d'exemples de fonctions fléchées en PHP

coldplay.xixi
Libérer: 2023-04-09 06:28:01
avant
3501 Les gens l'ont consulté

Explication détaillée d'exemples de fonctions fléchées en PHP

Les fermetures courtes appelées fonctions de flèche sont l'une des fonctionnalités tant attendues qu'apportera la version PHP7.4. Il a été proposé par Nikita Popov, Levi Morrison et Bob Weinand. Vous pouvez lire la RFC originale ici

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

Exemple rapide tiré de Doctrine DBAL

//老办法
$this->existingSchemaPaths = array_filter($paths, function ($v) use ($names) {
    return in_array($v, $names);
});

// 使用箭头函数的新方法
$this->existingSchemaPaths = array_filter($paths, fn($v) => in_array($v, $names));
Copier après la connexion

Regardons les règles

  1. sont des mots-clés, pas un nom de fonction réservé. fn
  2. Il ne peut avoir qu'une seule expression, qui est l'instruction return.
  3. ne nécessite pas l'utilisation des mots-clés
  4. et rereturn. use
  5. Les variables, les portées et les portées LSB sont automatiquement liées. $this
  6. Vous pouvez saisir des paramètres d'indice et des types de retour.
  7. Vous pouvez même utiliser des références
  8. et l'opérateur de spread &...
Quelques exemples

//作用域示例
$discount = 5;
$items = array_map(fn($item) => $item - $discount, $items);

//类型提示
$users = array_map(fn(User $user): int => $user->id, $users);

//展开操作符
function complement(callable $f) {
    return fn(...$args) => !$f(...$args);
}

//嵌套
$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;

//有效的函数签名
fn(array $x) => $x;
fn(): int => $x;
fn($x = 42) => $x;
fn(&$x) => $x;
fn&($x) => $x;
fn($x, ...$rest) => $rest;
Copier après la connexion

Portée future

    Fonctions fléchées multilignes
  1. Permet l'utilisation de fonctions fléchées pour les fonctions au sein d'une classe.
  2. //现今
    class Test {
        public function method() {
            $fn = fn() => var_dump($this);
            $fn(); // object(Test)#1 { ... }
    
            $fn = static fn() => var_dump($this);
            $fn(); // Error: Using $this when not in object context
        }
    }
    
    //也许在未来的某一天
    class Test {
        private $foo;
        private $bar;
    
        fn getFoo() => $this->foo;
        fn getBar() => $this->bar;
    }
    Copier après la connexion
    Mes points préférés

      Les rappels peuvent être plus courts
    1. Demander des variables sans le mot-clé
    2. . use
    Dites-moi ce que vous pensez de ces mises à jour et quel est votre plat préféré ?

    Merci d'avoir lu.

    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!

Étiquettes associées:
source:learnku.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal