Closure dan 'use'
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 2 dari 68.
Secara default, fungsi anonim hanya dapat mengakses variabel yang diteruskan kepadanya sebagai parameter. Namun, bagaimana jika kamu perlu agar closure-mu dapat mengakses variabel dari lingkup sekitarnya? Di sinilah kata kunci use digunakan.
Kata kunci use memungkinkan closure “menangkap” variabel dari cakupan induknya dan menggunakannya di dalam fungsi:
<?php
$message = "Welcome";
$greeting = function($name) use ($message) {
echo $message . ", " . $name . "!";
};
$greeting("Bob"); // Output: Welcome, Bob!
?>Perhatikan bahwa $message didefinisikan di luar fungsi, tetapi dengan menyertakan use ($message) setelah daftar parameter, closure dapat mengakses dan menggunakan variabel tersebut. Kamu dapat menangkap beberapa variabel dengan memisahkannya menggunakan koma: use ($var1, $var2).
Fitur ini membuat closure jauh lebih bermanfaat, sehingga closure dapat bekerja dengan data dari konteks sekitarnya sambil tetap mempertahankan fleksibilitas fungsi anonim.
Tantangan
MudahBuat fungsi anonim yang menangkap persentase diskon dari cakupan di sekitarnya menggunakan kata kunci use. Fungsi tersebut harus menerima harga sebagai parameter dan mengembalikan harga akhir setelah diskon diterapkan.
Kamu akan menerima dua input: persentase diskon dan harga awal. Baca kedua input, buat closure yang menangkap persentase diskon, panggil closure dengan harga, lalu cetak harga akhir setelah diskon.
Format input: Dua baris: baris pertama berisi persentase diskon (angka), baris kedua berisi harga awal (angka yang dapat memiliki desimal)
Output yang diharapkan: Harga akhir setelah diskon diterapkan
Coba sendiri
<?php
// Baca input
$discount = floatval(fgets(STDIN));
$price = floatval(fgets(STDIN));
// TODO: Buat fungsi anonim yang menggunakan 'use' untuk menangkap persentase diskon
// Fungsi tersebut harus menerima parameter harga dan mengembalikan harga akhir setelah diskon
// TODO: Panggil closure dengan harga dan simpan hasilnya
// Tampilkan harga akhir sebagai output
echo $finalPrice;
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Fungsi Lanjutan
Fungsi AnonimClosure dan 'use'Fungsi PanahFungsi CallbackMenggunakan 'call_user_func'Fungsi VariabelMengirim dengan ReferensiFungsi RekursifUlasan: Ragam Fungsi4Array Multidimensi
Membuat array 2DMengakses Elemen array 2DMengubah Elemen array 2DMelakukan Perulangan dengan loop Bersarangarray Asosiatif 2DRekap: Latihan Kisi Sederhana2Manipulasi array Lanjutan
Menambahkan dengan 'array_push'Menghapus dengan 'array_pop'Menambahkan dengan 'array_unshift'Menghapus dengan 'array_shift'Menggabungkan array berindeksMenggabungkan array asosiatifMengambil bagian dengan 'array_slice'Nilai dengan 'in_array'Kunci dengan 'array_search'Rekap: Latihan playlist3Mengurutkan array
Urutkan array berindeks secara menaikUrutkan array berindeks secara menurunUrutkan assoc array berdasarkan nilaiUrutkan assoc array berdasarkan kunciPengurutan urutan alamiPengurutan khusus dengan 'usort'Rangkuman: Pengurutan papan peringkatLatihan sendiri: Compiler PHP online