BAB 8.2B-2A – TYPE DECLARATION PADA FUNCTION
Tujuan Pembelajaran
Setelah mempelajari subbab ini, peserta didik diharapkan mampu:
- Menjelaskan pengertian Type Declaration.
- Memahami manfaat penggunaan tipe data pada parameter function.
- Menggunakan Scalar Type Declaration.
- Menggunakan Return Type Declaration.
- Memahami Nullable Type.
- Memahami Union Type (PHP 8+).
- Menerapkan Type Declaration pada studi kasus nyata.
- Menulis function sesuai standar PHP modern.
Pendahuluan
Pada materi sebelumnya kita telah membuat function seperti berikut.
function tambah($a, $b)
{
return $a + $b;
}
Program tersebut berjalan dengan baik.
Tetapi bagaimana jika dipanggil seperti berikut?
echo tambah("Andi", "Budi");
Atau
echo tambah(10, "Lima");
Apakah hasilnya sesuai harapan?
Belum tentu.
Kesalahan seperti ini sering menjadi sumber bug pada aplikasi.
Oleh karena itu, PHP modern menyediakan Type Declaration.
Apa itu Type Declaration?
Type Declaration adalah fitur PHP yang digunakan untuk menentukan tipe data yang boleh diterima oleh parameter function atau dikembalikan oleh function.
Dengan kata lain, programmer dapat memberi aturan seperti berikut:
- Parameter pertama harus berupa integer
- Parameter kedua harus berupa integer
- Nilai yang dikembalikan harus berupa integer
Mengapa Type Declaration Penting?
Tanpa Type Declaration:
function kali($a, $b)
{
return $a * $b;
}
Programmer lain dapat memanggil:
kali("Sepuluh", true);
Kode menjadi sulit diprediksi.
Dengan Type Declaration:
function kali(int $a, int $b)
{
return $a * $b;
}
Parameter yang diharapkan menjadi lebih jelas.
Jenis Type Declaration
PHP mendukung berbagai tipe data, antara lain:
| Tipe | Keterangan |
|---|---|
int | Bilangan bulat |
float | Bilangan desimal |
string | Teks |
bool | Nilai benar atau salah |
array | Larik |
object | Objek |
callable | Function yang dapat dipanggil |
iterable | Data yang dapat diulang |
mixed | Berbagai tipe data (PHP 8+) |
Pada subbab ini kita akan memulai dari tipe yang paling sering digunakan.
Integer Type
Contoh:
<?php
function luasPersegi(int $sisi)
{
return $sisi * $sisi;
}
echo luasPersegi(8);
?>
Output
64
Dua Parameter Integer
<?php
function tambah(int $a, int $b)
{
return $a + $b;
}
echo tambah(20, 30);
?>
Output
50
String Type
<?php
function salam(string $nama)
{
return "Halo ".$nama;
}
echo salam("Andi");
?>
Output
Halo Andi
Float Type
<?php
function luasLingkaran(float $r)
{
return 3.14 * $r * $r;
}
echo luasLingkaran(7.5);
?>
Output
176.625
Boolean Type
<?php
function status(bool $aktif)
{
if($aktif){
return "Aktif";
}
return "Tidak Aktif";
}
echo status(true);
?>
Output
Aktif
Menggabungkan Beberapa Tipe
<?php
function biodata(
string $nama,
int $umur,
bool $aktif
)
{
echo "Nama : ".$nama."<br>";
echo "Umur : ".$umur."<br>";
echo "Status : ";
echo $aktif ? "Aktif" : "Tidak Aktif";
}
biodata(
"Andi",
17,
true
);
?>
Return Type Declaration
Selain parameter, kita juga dapat menentukan tipe data hasil yang dikembalikan.
Sintaks:
function namaFunction(): tipeData
Contoh
<?php
function tambah(
int $a,
int $b
): int
{
return $a + $b;
}
echo tambah(10,5);
?>
Output
15
Return String
<?php
function sekolah(): string
{
return "SMK Negeri 1";
}
echo sekolah();
?>
Return Boolean
<?php
function lulus(int $nilai): bool
{
return $nilai >= 75;
}
var_dump(lulus(80));
?>
Output
bool(true)
Nullable Type
Kadang sebuah parameter boleh bernilai null.
Gunakan tanda ?.
Contoh:
<?php
function cetakNama(?string $nama)
{
if($nama === null){
echo "Nama belum diisi";
}else{
echo $nama;
}
}
cetakNama(null);
?>
Output
Nama belum diisi
Contoh lain:
cetakNama("Budi");
Output
Budi
Union Type (PHP 8+)
PHP 8 memperkenalkan Union Type.
Artinya parameter dapat menerima lebih dari satu tipe data.
Contoh:
<?php
function tampilkan(
int|string $data
)
{
echo $data;
}
tampilkan(100);
echo "<br>";
tampilkan("Seratus");
?>
Output
100
Seratus
Union Return Type
<?php
function hasil(bool $lulus): string|int
{
if($lulus){
return "Lulus";
}
return 0;
}
echo hasil(true);
?>
Studi Kasus 1
Menghitung Luas Persegi Panjang
<?php
function luas(
float $panjang,
float $lebar
): float
{
return $panjang * $lebar;
}
echo luas(12.5,8);
?>
Studi Kasus 2
Menghitung Gaji Bersih
<?php
function gajiBersih(
int $gajiPokok,
int $bonus
): int
{
return $gajiPokok + $bonus;
}
echo gajiBersih(
5000000,
1000000
);
?>
Studi Kasus 3
Menentukan Kelulusan
<?php
function cekKelulusan(
int $nilai
): string
{
return $nilai >=75
? "Lulus"
: "Remedial";
}
echo cekKelulusan(82);
?>
Best Practice Programmer
Gunakan Type Declaration pada Function Baru
Kurang baik:
function tambah($a,$b)
Lebih baik:
function tambah(
int $a,
int $b
): int
Gunakan Return Type
Return type membuat function lebih mudah dipahami oleh programmer lain.
Pilih Tipe Data yang Tepat
Gunakan:
intuntuk bilangan bulatfloatuntuk angka desimalstringuntuk teksbooluntuk status
Hindari menggunakan mixed jika satu tipe data sudah cukup.
Kesalahan yang Sering Dilakukan Pemula
Salah Menentukan Tipe
function umur(
string $umur
)
Padahal umur lebih tepat menggunakan int.
Tidak Menentukan Return Type
Akibatnya programmer lain tidak mengetahui jenis data yang dikembalikan oleh function.
Menggunakan Nullable Tanpa Alasan
Nullable (?string, ?int, dan sebagainya) hanya digunakan jika nilai null memang merupakan kondisi yang valid dalam aplikasi.
Latihan Praktik
Latihan 1
Buat function:
luasPersegi(int $sisi): int
Latihan 2
Buat function:
kelilingPersegiPanjang(
float $panjang,
float $lebar
): float
Latihan 3
Buat function:
profil(
string $nama,
int $umur
): string
yang mengembalikan teks biodata.
Latihan 4
Gunakan ?string pada parameter nama dan tampilkan pesan jika nilainya null.
Latihan 5
Buat function menggunakan Union Type yang menerima int|string, kemudian tampilkan nilainya.
Tugas Praktik Bab 8.2B-2A
Sistem Data Produk
Buat program menggunakan beberapa function dengan Type Declaration.
Minimal memiliki function berikut:
hitungDiskon(float $harga): floathitungPPN(float $harga): floathargaAkhir(float $harga): floatstatusStok(int $stok): string
Ketentuan:
- Semua parameter harus menggunakan Type Declaration.
- Semua function harus memiliki Return Type Declaration.
- Tampilkan hasil dalam tabel HTML dengan kolom:
- Nama Produk
- Harga Awal
- Diskon
- PPN
- Harga Akhir
- Status Stok
- Tambahkan minimal lima data produk.
Tantangan (Opsional)
- Gunakan Union Type pada fungsi pencarian produk sehingga dapat menerima ID produk (integer) atau kode produk (string).
- Tambahkan Nullable Type pada parameter deskripsi produk sehingga dapat bernilai
nulljika belum diisi.
