Tutorial Function Pada PHP

Parameter

Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.

Pada video sebelumnya kita telah belajar mengenai cara membuat function greet, yang menghasilkan tulisan ‘Hello World’. Nah, function greet ini akan lebih bagus lagi kalau bisa kita upgrade sehingga tidak hanya mengatakan Hello World saja. Kita ingin agar kata World bisa diganti-ganti menjadi nama user, bisa itu Andi, Budi, David, atau siapa saja tergantung dari si pemanggil function. Untuk melakukan hal itu, kita harus bisa mengirimkan data yang berupa nama user ke dalam function. Kita bisa melakukannya dengan menggunakan Parameter.

Kita bisa menuliskan parameter di dalam tanda kurung pada deklarasi function kita. Sebagai contoh, di dalam tanda kurung function greet, kita tambahkan $name. Cara menuliskan nama parameter mirip dengan cara menuliskan nama variable. Kemudian di dalam function, kita bisa menggunakan parameter tersebut dengan cara yang sama persis dengan cara kita menggunakan variable. Jadi kita mengubah isi functionnya menjadi menyebutkan kata Hello diikuti oleh parameter $name. Kalau kita memanggil fungsi tersebut dengan cara greet(‘Budi’), maka kita mendapatkan hasil ‘Hello Budi’.

Disini ada beberapa istilah yang perlu kita ketahui ya. Pada saat kita mendeklarasikan fungsi greet, di dalam kurung kita menambahkan parameter $name. Jadi $name diisi istilahnya adalah parameter. Kemudian lihat lagi di bawahnya. Pada saat kita memanggil fungsi greet, kita mengirimkan data berupa string ‘Budi’. ‘Budi’ disini adalah argument. Sebenarnya disini ada 2 istilah yang berbeda, parameter dan argument. Namun pada prakteknya kita sering terbalik untuk menyebutkan yang mana parameter dan yang mana argument, sehingga akhirnya orang menganggap bahwa keduanya adalah hal yang sama.

Agar kita bisa lebih jelas mengenai parameter, kita akan coba praktekan.

Kita buka kembali file hello.php dari tutorial sebelumnya. Disini kita membuat function greet yang menyampilkan kata ‘Hello World’. Kita ingin agar kata ‘World’ bisa diubah-ubah menjadi nama orang yang hendak disapa. Oleh karena itu kita akan menambahkan parameter.

Parameter bisa kita taruh di dalam tanda kurung deklarasi function. Kita tambahkan $name. Nama parameter mirip dengan nama variable, namun kita tidak perlu mengisinya dengan nilai. Nilai parameter nantinya diisi oleh pemanggil fungsi. Di dalam function, kita ubah kata World menjadi parameter $name. Kemudian pada saat memanggil fungsi greet, kita tambahkan argument ‘Budi’. Kita simpan dan jalankan, sekarang kita mendapatkan kata ‘Hello Budi’.

Bagaimana kalau function telah kita ubah menjadi menggunakan 1 parameter, namun pada saat memanggil function kita tidak menggunakan argument sama sekali? Kita coba ya. Ternyata keluar fatal error karena terlalu sedikit argument pada saat kita memanggil function greet. Jadi kalau kita sudah menetapkan bahwa function greet menggunakan 1 parameter, maka kita harus mengikutinya pada saat kita memanggil function greet.

Function greet bisa kita panggil berkali-kali menggunakan argument yang berbeda. Misalkan pertama kita panggil greet(‘Budi’). Kemudian kita panggil lagi greet(‘Andi’). Kalau kita jalankan, maka function greet dijalankan sebanyak 2 kali namun dengan output yang berbeda, yaitu ‘Hello Budi’ dan ‘Hello Andi’.

Function greet juga bisa kita panggil dengan menggunakan variable sebagai argument-nya. Misalkan kita buat variable $user dengan nilai ‘Budi’. Kemudian kita panggil fungsi greet dengan variable $user sebagai argument-nya. Kita jalankan. Dan hasilnya adalah ‘Hello Budi’. Fungsi menggunakan nilai yang dikandung oleh variable sebagai parameter $name.

Namun kita tetap perlu ingat ya, bahwa variable dan parameter itu adalah dua hal yang berbeda. Sebagai contoh, kalau setelah memanggil function greet, kita tambahkan lagi echo untuk menampilkan nilai dari variable $user. Kalau kita jalankan, pertama kita dapat ‘Hello Budi’, kemudian kita mendapatkan tulisan ‘Budi’.

Sekarang di dalam function, kita ganti nilai dari parameter $name menjadi ‘World’. Kita jalankan. Kita mendapatkan hasil ‘Hello World’ dan ‘Budi’. Artinya pada saat kita mengubah parameter di dalam function, yang berubah hanya nilai dari parameter itu saja. Nilai dari variable si pemanggil function tidak berubah. Pada dunia pemograman, hal ini kita sebut dengan nama ‘Parsing Parameter By Value’.

Kita lanjutkan ya. Kalau misalkan kita memerlukan lebih dari satu data yang perlu dikirim ke dalam function, maka kita tinggal menambahkan parameternya dengan dipisahkan oleh tanda koma. Misalnya kita mau ubah fungsi kita menjadi menggunakan nama depan dan nama belakang. Maka parameter pertama kita ubah dahulu menjadi $firstName, lalu kita tambahkan tanda koma dan kita tambahkan lagi parameter $lastName. Isi function juga kita ubah menjadi Hello $firstName ditambah $lastName.

Kalau kita langsung jalankan, kembali lagi kita mendapatkan fatal error ya. PHP tidak menerima kalau deklarasi function menggunakan 2 parameter, sedangkan pada saat memanggil function-nya kita hanya mengirim 1 argument. Kita harus menambahkan argument-nya. Cara menambahnya juga sama seperti menambahkan parameter, kita pisahkan dengan menggunakan tanda koma. Kita ubah menjadi 2 argument yaitu ‘Budi’ dan ‘Prawira. Sekarang kita mendapatkan hasil ‘Hello Budi Prawira’.

Kita lanjutkan materi. Masih berhubungan dengan parameter. PHP memiliki fitur yang bernama Default Argument Values. Dengan menggunakan fitur ini, kita bisa mengisikan parameter dengan nilai default, apabila pemanggil function tidak memberikan argument untuk parameter yang bersangkutan. Tadi kita sudah mencoba, kalau misalkan function kita memiliki 2 parameter, namun dipanggil hanya menggunakan 1 argument maka terjadi fatal error. Dengan menggunakan fitur ini, kita tidak mendapatkan error. Parameter yang kedua secara otomatis diisi dengan default value.

Cara menggunakan Default Argument Values adalah dengan menambahkan tanda sama dengan setelah nama parameter. Setelah itu kita isi dengan nilai default. Biasanya parameter yang memiliki default value berada di bagian belakang.

Kita lihat contohnya ya. Di parameter $lastName kita tambahkan default value dengan nilai ‘Doe’. Jadi kalau function greet dipanggil tanpa argument $lastName, maka $lastName diisi dengan string ‘Doe’. Misalkan kita memanggil function greet hanya dengan 1 argument ‘John’, maka kita mendapatkan hasil ‘Hello John Doe’.

Kita kembali ke kode. Nah, sekarang kita ubah lagi ya. Pada saat kita memanggil fungsi greet, kita hapus argument kedua, sehingga kita hanya menggunakan satu argument ‘Budi’ saja. Kalau kita jalankan maka keluar error ya. Parameternya harus 2, sedangkan argumentnya hanya 1.

Nah, error seperti ini bisa kita atasi dengan menggunakan default argument value pada parameter $lastName. Cara membuatnya? Kita tambahkan tanda sama dengan, diikuti oleh nilai yang menjadi default valuenya, misalnya ‘Doe’. Dan sekarang kode kita sudah tidak error lagi, karena argument kedua yang tadinya tidak ada, secara otomatis diisi dengan nilai string ‘Doe’.

Yang perlu kita ingat disini adalah bahwa PHP memasangkan parameter dengan argument berdasarkan urutannya. Jadi kalau kita membuat argument ‘Budi’, dan ‘Jaya’. Maka PHP memasukkan ‘Budi’ sebagai parameter $firstName, karena urutannya sama-sama di bagian pertama. Sedangkan bagian kedua adalah ‘Jaya’, dipasangkan ke parameter $lastName.

Karena parameter harus berurutan dari depan seperti ini, maka default argument value tidak bisa ditaruh di depan. Misalnya, nilai default ‘Doe’ ini kita pindahkan dari $lastName menjadi $firstName. Kemudian kita panggil function hanya menggunakan argument ‘Budi’ saja. Maksud kita $firstName-nya menggunakan nilai default ‘Doe’, sedangkan ‘Budi’ ini adalah untuk $lastName. Namun yang terjadi malah error. PHP menanggap bahwa ‘Budi’ adalah firstName, karena posisinya di paling depan. Sedangkan lastName-nya dianggap tidak ada argument.

Kalau kita komentari kode untuk memanggil function greet, maka kita mendapatkan pesan deprecated. Pada pesan errornya ada istilah optional parameter dan required parameter ya. Pada awalnya, semua parameter bersifat required, atau harus diisi. Namun setelah kita menambahkan default argument value, maka parameter yang bersangkutan berubah menjadi optional. Parameter boleh tidak diisi, dan kalau tidak diisi maka PHP mengisinya dengan nilai default.

Yang menjadi problem disini adalah parameter $firstName bersifat optional, sedangkan parameter $lastName bersifat required. Namun posisi parameter $firstName berada di depan parameter $lastName. Oleh karena itu, PHP mengubah $firstName menjadi required. Nah, dengan aturan seperti ini, artinya kalau kita hendak menggunakan fitur default argument value, maka kita harus menggunakannya pada parameter yang posisinya di paling belakang.

Sejak PHP versi 8 ada fitur baru yang bernama Named Arguments. Dengan menggunakan fitur ini, kita bisa mengirimkan argument yang dipasangkan dengan nama parameternya. Jadi sekarang argument sudah tidak perlu mengikuti urutan dari parameter. Untuk menggunakan named arguments, pertama kita tulis dahulu nama parameter, namun ingat ya nama parameter yang berada di dalam named arguments ini tidak perlu menggunakan simbol dollar. Kemudian kita ikuti dengan tanda titik dua dan nilai dari argument tersebut.

Kita langsung coba pada kodenya ya. Pertama kita hapus dahulu default arguments value pada parameter $firstName. Lalu kita panggil fungsi greet dengan argument ‘John’, dan ‘Doe’. Kalau kita jalankan maka kita mendapatkan hasil Hello John Doe. Disini kita harus mengikuti urutan dari parameter. Jadi ‘John’ adalah $firstName, sedangkan ‘Doe’ adalah $lastName.

Nah, dengan menggunakan Named Arguments, maka kita bisa membalikkan urutan argument. Kita bisa mengirimkan $lastName terlebih dahulu, setelah itu barulah $firstName. Bagaimana caranya? Sebelum kita menuliskan argument, kita tuliskan dahulu nama parameternya, yaitu lastName tanpa tanda dollar, diikuti oleh tanda titik dua, lalu nilainya yaitu ‘Doe’. Kita pisahkan dengan tanda koma, kita ketik lagi firstName: ‘John’.

Kita jalankan. Kedua fungsi memberikan hasil yang sama ya. Walaupun pada pemanggilan fungsi yang kedua, kita memasukkan argument dalam urutan yang terbalik. Namun PHP tetap mengartikan ‘John’ sebagai nama depan, dan ‘Doe’ sebagai nama belakang.

Mungkin ada teman-teman ada yang bertanya ya, berhubungan dengan topik sebelumnya yaitu Default Argument Values. Bagaimana kalau kita menggunakan Default Argument Value pada parameter $firstName, lalu kita gunakan Named Argument untuk mengisi lastName. Nah, secara teori kan keduanya parameternya sudah punya nilai nih.

Kita coba ya. Pada parameter $firstName kita beri default value ‘John’. Lalu pada saat memanggil, kita hanya memberikan argument lastName: Doe. Kita jalankan. Dan ternyata error. Kita lihat lagi ke atas ya. Ternyata cara ini sudah deprecated. Artinya sudah tidak boleh digunakan lagi. Kalau kita ingin menggunakan Default Argument Values, harus di parameter yang posisinya paling belakang.

Kita lanjutkan ke topik berikutnya yaitu Type Declaration. Kita sudah belajar ya cara menggunakan parameter untuk mengirimkan data ke dalam function. Masalahnya, parameter yang kita buat itu bisa digunakan untuk mengirimkan tipe data apa saja ke dalam function. Apabila tipe data yang dikirim tidak sesuai dengan function, bisa menyebabkan function menjadi error. Oleh karena itu, kita mesti membatasi tipe data yang boleh dikirim ke dalam function, dengan menggunakan type declaration.

Kita lihat contoh kasusnya ya. Misalkan kita membuat function total dengan parameter $a dan $b. Di dalam function, kita menggunakan operator tambah untuk menambahkan nilai $a dan $b. Jadi tujuan dari function ini sederhana ya. Kita ingin menghitung jumlah $a ditambah $b dan langsung kita tampilkan ke layar.

Pada bagian atas, kita memanggil function total dengan menggunakan 2 argument yang tipe data-nya integer. Function berjalan dengan benar ya. Kita lihat hasilnya di sebelah kanan. Nilai 1 ditambah 2 menghasilkan 3.

Sekarang perhatikan di bagian bawah. Function dipanggil dengan menggunakan 2 argument string, yaitu ‘Hello’ dan ‘World’. Akibatnya, pada saat PHP menjalankan ‘Hello’ ditambah ‘World’, terjadilah fatal error. Operator tanda tambah tidak bisa digunakan untuk tipe data string.

Oleh karena itu, pada saat kita membuat function, lebih baik kita deklarasikan tipe data apa saja yang boleh dikirimkan ke dalam function. Caranya? Sebelum kita menyebutkan nama parameter, kita sebutkan dahulu tipe datanya. Sebagai contoh disini tipe data int, untuk bilangan bulat. Jadi kita hanya boleh menggunakan bilangan bulat ke dalam function. Bagaimana kalau ternyata pemanggil function mengirimkan tipe data lain, misalnya mengirimkan string? Nah, pertama PHP akan mencoba dahulu untuk melakukan konversi tipe data dari string ke integer. Kalau bisa, maka PHP meneruskan pemanggilan data tapi menggunakan tipe data integer. Sedangkan kalau ternyata tidak bisa, maka PHP langsung menghentikan jalannya program dengan alasan fatal error.

Apa saja tipe data yang didukung oleh PHP? Nah, di bagian sebelah kiri ada tipe-tipe data yang sudah pernah kita bahas pada video sebelumnya. Yaitu int untuk bilangan bulat, float untuk bilangan desimal, bool untuk benar atau salah, string untuk teks, dan null untuk kosong. Sedangkan di sebelah kanan adalah tipe data yang lebih rumit yang masih belum pernah kita bahas pada tutorial. Nantinya tipe data yang di sebelah kanan akan kita bahas pada saat kita sudah memasuki ke materi yang bersangkutan.

Kita praktek coding. Kita lihat kembali ke function greet ya. Seharusnya kita menerima parameter dalam bentuk string, jadi kita ubah parameter kita menjadi string $firstName, string $lastName. Kita coba jalankan ya. Berjalan normal. Kalau misalkan kita ganti salah satu argumentnya menjadi angka 1, masih tetap berjalan normal. Karena PHP bisa dengan mudah melakukan konversi dari angka menjadi string.

Kita pindah ke kode lain ya. Disini ada function total seperti yang kita bahas pada slide barusan. Function total menerima 2 buah paramater dalam bentuk angka. Kalau kita coba panggil function total dengan argument 1 dan 2, maka kita mendapatkan hasil 3.

Kalau kita coba ganti argument pertama menjadi string 1, maka function tetap berjalan normal dan menghasilkan angka 3 ya. Karena PHP bisa dengan mudah melakukan konversi dari string ‘1’ menjadi angka 1.

Namun kalau kita mengganti argument pertama menjadi huruf ‘a’, maka terjadilah fatal error. Hal ini disebabkan karena string ‘a’ tidak bisa diubah menjadi angka.

Bagaimana kalau kita memasukkan bilangan float atau pecahan ya? Kita coba saja. Misalkan kita masukkan angka 1,8. Pada bahasa pemograman, kita harus menulisnya sebagai 1.8. Dan ternyata hasilnya juga tetap error. Error disini adalah deprecated, sebab kita sudah tidak bisa melakukan konversi dari float 1,8 menjadi integer, karena ada kehilangan nilai 0,8-nya ya.

Kita memasuki materi terakhir pada video ini, yaitu Union Types. Fitur ini baru diperkenalkan pada PHP versi 8. Jadi kalau teman-teman hendak mencoba fitur ini, maka pastikan dahulu PHP yang sedang digunakan adalah PHP versi 8 atau diatasnya. Dengan menggunakan Union Types, maka kita bisa menggunakan lebih dari satu tipe data untuk parameter. Caranya? Setelah tipe data pertama, kita tambahkan simbol | dan diikuti oleh tipe data berikutnya.

Pada saat kita belajar mengenai operator, kita sudah tau ya bahwa simbol | digunakan untuk logika atau. Pada union types ini juga sama ya. Union type juga menggunakan logika atau. Jadi kalau kita mengatakan bahwa tipe data int union float, maka kita boleh menggunakan salah satu dari integer atau float.

Kita langsung praktekkan. Kita lihat lagi ke function total ya. Sebenarnya function ini bisa dijalankan untuk tipe data int atau float. Walaupun kita memasukkan bilangan desimal ke dalam function, mestinya function tetap berjalan normal tanpa error ya. Oleh karena itu kita tambahkan union types disini.

Kita coba ya. Sekarang kita tambahkan pada parameternya ya, tipe datanya menjadi int atau float. Dan parameter yang kedua juga sama, int atau float. Nah sekarang kalau kita coba jalankan, maka kita mendapatkan hasil 1,8 ditambah 2 adalah 3,8.

2 Jam 41 Menit

Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.

Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.