Sobes.tech
Middle

Czym jest zamknięcie w PHP?

sobes.tech AI

Odpowiedź od AI

Funkcja-obiekt z możliwością przechwytywania zmiennych z zakresu swojego twórcy, nawet po zakończeniu tego zakresu.

<?php
// Zamknięcie, które przechwytuje $factor
$multiplyBy = function ($factor) {
    return function ($number) use ($factor) {
        return $number * $factor;
    };
};

$double = $multiplyBy(2);
$triple = $multiplyBy(3);

echo $double(10); // Wypisuje: 20
echo $triple(10); // Wypisuje: 30

Główne cechy:

  • Są instancjami klasy Closure.
  • Mogą dziedziczyć zmienne z zakresu nadrzędnego za pomocą słowa kluczowego use.
  • Dziedziczone zmienne są dziedziczone przez wartość, chyba że wyraźnie zaznaczono dziedziczenie przez referencję (use (&$variable)).
  • Często używane do tworzenia funkcji anonimowych, które "pamiętają" kontekst swojego tworzenia.