Kali ini penulis ingin bicara tentang tiga titik pada syntak yang ada pada PHP, pasti tentunya bukan hal yang mudah untuk diketahui. Buktinya kalian sedang mencari “apa arti tiga titik pada PHP” di mesin pencari ya kan?
Versi PHP tertua yang masih dapat menggunakan titik tiga ini ada pada PHP 5.6, biasanya digunakan menjalankan fungsi listing pada variable argument, yang mana pada saat itu merupakan cara canggih untuk untuk menerima sejumlah argumen variable yang variadic menggunakan fungsi.
Pada PHP 7.4, tiga titik masih dapat digunakan sebagai operator penyebaran serbaguna untuk berbagai jenis array. Artinya, pada versi ini, tiga titik tidak lagi hanya terbatas pada daftar argumen variabel yang dikirim ke fungsi. Banyak pengembang yang sering mengandalkan fitur ini, dan sekarang penulis pun sulit membayangkan PHP tanpa keberadaannya.
Namun pada PHP 8.1 baru-baru ini memperkenalkan … (tiga titik) sebagai sintaks baru yang dirancang agar dapat memanggil sesuatu secara banyak.
Mari kita bahas ini sedikit, karena menurut penulis penjelasan berikut mungkin yang paling membingungkan pada pandangan pertama.
Seperti biasa, pentingnya untuk menaruh script secara berdampingan ya…
// syntax lama array_map($array, ‘is_numeric’);
// syntax baru array_map($array, is_numeric(…));
Daripada menentukan callable sebagai string, Sekarang kita dapat menggunakan sintaksis titik tiga untuk merujuk ke callable secara langsung.
Kedua fungsi ini pada dasarnya melakukan hal dasar yang sama, tetapi sintaksis yang lebih baru tidak memerlukan pekerjaan khusus atau tools khusus untuk memahaminya.
Selain itu, sintaksis yang dapat dipanggil ini bisa digunakan dengan tipe fungsi lain yang tidak dapat direpresentasikan sebagai string, seperti salah satu helper string berikut:
array_map($array, \Str::lower(…));
Perbedaan lain yang halus namun penting adalah bahwa di versi php lama menggunakan cakupan tempat callable didefinisikan. Jadi, Anggap aja kalian mengembalikan fungsi yang callable dari suatu class, dan fungsi tersebut merujuk ke metode class private. Sintak di versi lama akan gagal, tetapi di sintak versi php 7.1 keatas hal tersebut berfungsi karena method private berada dalam cakupan saat function callable tercipta.
class MyClass {
private function myPrivateMethod(...$args) {
return "Args received: " . implode(', ', $args);
}
public function getCallable() {
return function(...$args) {
return $this->myPrivateMethod(...$args);
};
}
}
$instance = new MyClass();
$callable = $instance->getCallable();
echo $callable(1, 2, 3); // Output: "Args received: 1, 2, 3"
Penggunaan Three Dots (...
)
- Variadic Parameter: Digunakan untuk menerima sejumlah argumen yang tidak terbatas.
- Unpacking Operator: Digunakan untuk memecah array menjadi elemen individu ketika diteruskan ke metode atau fungsi.
Jika ...
digunakan dalam callable, baik sebagai parameter variadic atau unpacking operator, private method tetap dapat diakses seperti dalam contoh di atas, selama kalian menggunakan sintaksis baru yang membawa scope class.
Semoga dapat dipahami, semangat! 🔥