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:

TipeKeterangan
intBilangan bulat
floatBilangan desimal
stringTeks
boolNilai benar atau salah
arrayLarik
objectObjek
callableFunction yang dapat dipanggil
iterableData yang dapat diulang
mixedBerbagai 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:

  • int untuk bilangan bulat
  • float untuk angka desimal
  • string untuk teks
  • bool untuk 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): float
  • hitungPPN(float $harga): float
  • hargaAkhir(float $harga): float
  • statusStok(int $stok): string

Ketentuan:

  1. Semua parameter harus menggunakan Type Declaration.
  2. Semua function harus memiliki Return Type Declaration.
  3. Tampilkan hasil dalam tabel HTML dengan kolom:
    • Nama Produk
    • Harga Awal
    • Diskon
    • PPN
    • Harga Akhir
    • Status Stok
  4. 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 null jika belum diisi.

Similar Posts

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *