PHP Academy · Pelajaran

Fungsi Anonim dan Closure

Menulis fungsi sebaris dan menangkap variabel dengan use.

Pelajaran 4 dari 413 langkah

Fungsi Anonim dan Closure adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Apa Itu Fungsi Anonim?

Fungsi anonim (lambda) adalah fungsi tanpa nama. Dalam PHP, fungsi ini merupakan instans dari kelas Closure bawaan dan dapat disimpan dalam variabel, diteruskan sebagai argumen, atau dikembalikan dari fungsi lain.

Fungsi Anonim Dasar

Tetapkan fungsi ke variabel lalu panggil fungsi tersebut:

<?php
$double = function(int $n): int {
    return $n * 2;
};

echo $double(5);   // 10
echo $double(21);  // 42

Meneruskan Fungsi Anonim

Teruskan closure sebagai argumen ke fungsi seperti array_map, usort, atau fungsi panggilan balik Anda sendiri:

<?php
$nums = [3, 1, 4, 1, 5, 9];

$squared = array_map(function(int $n): int {
    return $n ** 2;
}, $nums);

print_r($squared); // [9, 1, 16, 1, 25, 81]

Mengembalikan Fungsi

Sebuah fungsi dapat membuat dan mengembalikan closure — ini adalah pola pabrik:

<?php
function makeMultiplier(int $factor): Closure {
    return function(int $n) use ($factor): int {
        return $n * $factor;
    };
}

$triple  = makeMultiplier(3);
$tenX    = makeMultiplier(10);

echo $triple(5);   // 15
echo $tenX(5);     // 50

Closure dan use

Closure dapat menangkap variabel dari lingkup luar dengan use. Penangkapan dilakukan berdasarkan nilai (salinan), kecuali Anda menambahkan &:

<?php
$taxRate = 0.18;

$addTax = function(float $price) use ($taxRate): float {
    return $price * (1 + $taxRate);
};

$taxRate = 0.20;  // change outer variable
echo $addTax(100); // 118 — captured value at creation time

Penangkapan Berdasarkan Referensi dengan use(&)

Agar closure dapat melihat nilai luar yang telah diperbarui, lakukan penangkapan berdasarkan referensi:

<?php
$count = 0;

$increment = function() use (&$count): void {
    $count++;
};

$increment();
$increment();
echo $count;  // 2

Fungsi Panah (PHP 7.4)

Fungsi panah adalah closure satu ekspresi yang ringkas dan secara otomatis menangkap lingkup luar berdasarkan nilai:

<?php
$rate = 1.18;
$prices = [10, 20, 30];

// Arrow function — no 'use' needed
$withTax = array_map(fn($p) => $p * $rate, $prices);

print_r($withTax); // [11.8, 23.6, 35.4]

Fungsi Panah Tidak Dapat Mengubah Lingkup Luar

Fungsi panah hanya menangkap berdasarkan nilai — fungsi ini tidak dapat mengubah variabel luar:

<?php
$total = 0;
$nums  = [1, 2, 3];

// This does NOT modify $total!
array_walk($nums, fn($n) => $total += $n);

echo $total;  // 0

// Use a reference closure for mutation:
array_walk($nums, function($n) use (&$total) { $total += $n; });
echo $total;  // 6

Closure sebagai Fungsi Panggilan Balik

Banyak fungsi PHP menerima sesuatu yang dapat dipanggil — Anda dapat meneruskan closure, larik [$obj, 'method'], atau nama fungsi berupa string:

<?php
$words = ['banana', 'apple', 'cherry'];

usort($words, fn($a, $b) => strcmp($a, $b));

print_r($words); // ['apple', 'banana', 'cherry']

Closure yang Langsung Dipanggil

Anda dapat mendefinisikan dan memanggil closure pada baris yang sama — berguna untuk membuat lingkup terisolasi:

<?php
$result = (function(): int {
    $x = 10;
    $y = 20;
    return $x + $y;
})();

echo $result; // 30
// $x and $y are not in outer scope

Closure::bind dan bindTo

Anda dapat mengikat ulang closure ke konteks objek lain menggunakan Closure::bind():

<?php
class Counter {
    private int $value = 0;
}

$increment = Closure::bind(function(int $by): void {
    $this->value += $by;
}, new Counter(), Counter::class);

// Now $increment has access to private $value

Pemeriksaan Singkat

Apa perbedaan utama antara closure biasa dengan use dan fungsi panah dalam PHP?

Ringkasan: Fungsi Anonim dan Closure

Ringkasan:

  • Fungsi anonim disimpan dalam variabel dan dapat diteruskan
  • Closure menangkap variabel luar dengan use($var) (berdasarkan nilai) atau use(&$var) (berdasarkan referensi)
  • Fungsi panah (PHP 7.4) secara otomatis menangkap lingkup luar berdasarkan nilai
  • Berguna untuk fungsi panggilan balik: array_map, usort, array_filter…
  • Dapat dikembalikan dari fungsi pabrik
Gratis untuk memulai

Belajar PHP dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
49
Pelajaran
195

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi Anonim dan Closure” gratis?

Ya — teks lengkap “Fungsi Anonim dan Closure” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi Anonim dan Closure”?

Menulis fungsi sebaris dan menangkap variabel dengan use. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Fungsi Anonim dan Closure” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendefinisikan dan Memanggil Fungsi
  2. Parameter Default dan Variadik
  3. Cakupan Variabel: Lokal dan Global
  4. Fungsi Anonim dan Closure
← Kembali ke PHP Academy