BAB 6: FUNCTION

6-1: Function Basics

Objectives

  • Memahami apa itu function
  • Membuat dan memanggil function
  • Memahami return value
  • Memahami perbedaan echo dan return
  • Mengetahui aturan penamaan dan pemanggilan function

Apa itu Function?

Function adalah block kode yang bisa digunakan ulang.

┌─────────────────────────────────────────────────────────┐
│   FUNCTION = REUSABLE BLOCK OF CODE                      │
├─────────────────────────────────────────────────────────┤
│                                                          │
│   function greet() {                                    │
│       echo "Hello!";                                   │
│   }                                                    │
│                                                          │
│   greet();  ← Panggil function                         │
│   greet();  ← Panggil lagi                            │
│   greet();  ← Panggil lagi                            │
│                                                          │
└─────────────────────────────────────────────────────────┘

Bayangkan function seperti resep masakan. Kamu menulis resepnya sekali (function), lalu setiap kali mau masak, kamu tinggal mengikuti resep itu tanpa perlu menulis ulang dari nol. Kalau resepnya diubah, semua masakan yang memakai resep itu ikut berubah.

Manfaat utama function:

  1. Reusable — tulis sekali, pakai berkali-kali.
  2. Terorganisir — kode terpecah menjadi bagian-bagian kecil yang jelas tujuannya.
  3. Mudah diperbaiki — jika ada bug, cukup perbaiki di satu tempat.
  4. Mudah dibaca — nama function menjelaskan apa yang dilakukan kode.

Basic Function

php
<?php

// Define function
function greet() {
    echo "Hello, World!\n";
}

// Call function
greet();  // Hello, World!
greet();  // Hello, World!

?>

Perhatikan struktur penulisan function:

text
function namaFunction() {
    // body / isi function
}
  • function — kata kunci untuk mendeklarasikan function.
  • namaFunction — nama yang kamu pilih (ikuti aturan penamaan di bawah).
  • () — tempat parameter (dibahas di materi 6-2).
  • { ... } — body function, berisi kode yang dijalankan.
💡Tip

Function di PHP bisa dipanggil sebelum dideklarasikan di file yang sama — PHP membaca seluruh file dulu sebelum mengeksekusi. Ini disebut hoisting. Namun untuk keterbacaan, tetap deklarasikan function di atas tempat pemakaiannya.

Aturan Penamaan Function

php
<?php

// ✅ Nama yang baik (snake_case, deskriptif)
function calculateTotalPrice() {}
function sendEmail() {}
function getUserName() {}

// ❌ Nama yang buruk
// function f() {}          // Terlalu singkat, tidak jelas
// function doStuff() {}    // Terlalu umum
// function 123abc() {}     // Tidak boleh diawali angka

// Nama function TIDAK case-sensitive di PHP
function Hello() {}
hello();  // ✅ Tetap bisa dipanggil

?>

Aturan praktis penamaan:

  • Gunakan huruf kecil dan snake_case (pemisah dengan underscore) — konvensi komunitas PHP.
  • Nama harus deskriptif: calculateTotal() lebih baik dari calc().
  • Nama tidak boleh diawali angka, dan tidak boleh sama dengan keyword PHP (echo, if, for, dst).

Function dengan Parameter

php
<?php

// Single parameter
function greet($name) {
    echo "Hello, $name!\n";
}

greet("Andi");  // Hello, Andi!
greet("Budi");  // Hello, Budi!

// Multiple parameters
function add($a, $b) {
    echo $a + $b;
}

add(5, 3);  // 8

?>

Parameter adalah "bahan" yang diterima function dari luar. Dengan parameter, function yang sama bisa menghasilkan output berbeda sesuai input yang diberikan — inilah yang membuat function fleksibel.

Parameter vs Argument:

IstilahArtiContoh
ParameterVariabel yang dideklarasikan di definisi function$name di function greet($name)
ArgumentNilai yang dikirim saat memanggil function"Andi" di greet("Andi")

Return Value

php
<?php

// Return value
function add($a, $b) {
    return $a + $b;
}

$result = add(5, 3);
echo $result;  // 8

// Return dengan void
function printHello() {
    echo "Hello!";  // No return = returns null
}

$result = printHello();  // prints "Hello!"
var_dump($result);  // NULL

?>

return melakukan dua hal sekaligus:

  1. Mengirim nilai keluar dari function ke pemanggilnya.
  2. Menghentikan eksekusi function saat itu juga.

Kode setelah return tidak akan pernah dijalankan:

php
<?php

function checkAge($age) {
    if ($age < 18) {
        return "Di bawah umur";
        // Kode di bawah ini TIDAK pernah dieksekusi
        echo "Baris ini tidak akan muncul";
    }
    return "Dewasa";
}

echo checkAge(15) . "\n";  // Di bawah umur
echo checkAge(20) . "\n";  // Dewasa

?>

Echo vs Return

Ini adalah salah satu konsep yang paling sering membingungkan pemula:

EchoReturn
Mencetak output langsung ke layarMengirim nilai kembali ke pemanggil
Tidak bisa ditangkap nilainyaBisa disimpan ke variabel
echo di dalam function = efek sampingreturn = hasil function
Tidak menghentikan functionMenghentikan function
php
<?php

function greetEcho($name) {
    echo "Halo, $name";  // Langsung tampil, tidak bisa ditangkap
}

function greetReturn($name) {
    return "Halo, $name";  // Dikembalikan, bisa diolah dulu
}

// greetEcho hasilnya langsung tampil, tapi nilainya "hilang"
greetEcho("Andi");  // Output: Halo, Andi

// greetReturn hasilnya bisa disimpan, diolah, baru ditampilkan
$message = greetReturn("Budi");
echo strtoupper($message) . "\n";  // Output: HALO, BUDI

// Bahkan bisa digabung dengan string lain
echo greetReturn("Citra") . " - selamat datang!\n";  // Halo, Citra - selamat datang!

?>
💡Tip

Best practice: function sebaiknya menggunakan return, bukan echo. Dengan return, function menjadi "murni" — hasilnya bisa dipakai untuk perhitungan lanjutan, disimpan ke database, atau ditampilkan dengan format apa pun. Echo di dalam function membuat function sulit dipakai ulang.

Void Return Type (PHP 7.1+)

php
<?php

// Declare return type
function greet(string $name): void {
    echo "Hello, $name";
}

// Tidak bisa return value
// function greet(): void {
//     return "Hello";  // Error!
// }

?>

void memberi tahu PHP (dan programmer lain) bahwa function ini memang tidak mengembalikan nilai apa pun — hanya melakukan aksi (seperti mencetak). Jika kamu mencoba return dengan nilai di function : void, PHP akan melempar TypeError.

Multiple Return Points

Function boleh memiliki lebih dari satu return — biasanya untuk percabangan:

php
<?php

function grade($score) {
    if ($score >= 90) return "A";
    if ($score >= 80) return "B";
    if ($score >= 70) return "C";
    if ($score >= 60) return "D";
    return "E";
}

echo grade(95) . "\n";  // A
echo grade(85) . "\n";  // B
echo grade(65) . "\n";  // D
echo grade(40) . "\n";  // E

?>

Pola "early return" seperti ini membuat kode lebih mudah dibaca daripada if-else bertingkat.

Function Memanggil Function

Function bisa memanggil function lain — ini cara membangun program yang terstruktur:

php
<?php

function formatRupiah($amount) {
    return "Rp " . number_format($amount);
}

function printReceipt($items, $total) {
    echo "=== STRUK BELANJA ===\n";
    foreach ($items as $item) {
        echo "- $item\n";
    }
    echo "Total: " . formatRupiah($total) . "\n";  // Panggil function lain
}

printReceipt(["Nasi Goreng", "Es Teh"], 25000);

/*
Output:
=== STRUK BELANJA ===
- Nasi Goreng
- Es Teh
Total: Rp 25.000
*/

?>

Common Mistakes

Redeclaration Error

php
<?php

// ❌ Function dengan nama sama dideklarasikan dua kali
function greet() {
    echo "Halo\n";
}
// function greet() {  // Fatal error: Cannot redeclare greet()
//     echo "Hai\n";
// }

?>
⚠️Perhatian

PHP tidak mengizinkan dua function dengan nama sama (kecuali nama berbeda case, yang tetap dianggap sama). Error "Cannot redeclare" paling sering muncul karena file yang sama di-include dua kali. Gunakan include_once/require_once untuk mencegahnya.

Memanggil dengan Nama Salah

php
<?php

function calculateTotal() {
    return 100;
}

// ❌ Salah: nama tidak sama
// echo calculateTotalPrice();  // Fatal error: Uncaught Error

// ✅ Benar
echo calculateTotal();  // 100

?>

PHP memberi pesan error yang cukup jelas untuk kasus ini: Call to undefined function. Baca pesan errornya — biasanya langsung menunjukkan nama function yang salah.

Lupa Tanda Kurung

php
<?php

function greet() {
    return "Halo!";
}

// ❌ Tanpa kurung = referensi function, bukan memanggil
// echo greet;  // Error

// ✅ Dengan kurung = memanggil
echo greet();  // Halo!

?>

Pro Tips

  1. Satu function, satu tugas — jika function melakukan dua hal berbeda, pecah menjadi dua function.
  2. Gunakan return bukan echo di dalam function (kecuali function memang khusus mencetak).
  3. Nama function = kata kerjacalculateTotal(), sendEmail(), getUser().
  4. Jangan ulangi kode (DRY — Don't Repeat Yourself): jika kamu menulis kode yang sama dua kali, kemungkinan besar itu harus jadi function.

Exercise

  1. Buat function untuk calculate luas persegi panjang
  2. Buat function untuk convert Celsius ke Fahrenheit
  3. Apa perbedaan echo dan return?
  4. Buat function isEven($num) yang mengembalikan true jika angka genap, lalu gunakan di dalam loop untuk mencetak bilangan genap 1-10
  5. Buat function sapa($nama, $waktu) yang mengembalikan sapaan sesuai waktu ("Selamat pagi", "Selamat siang", "Selamat malam"), lalu panggil untuk 3 nama berbeda

Summary

PoinPenjelasan
FunctionBlock kode yang bisa digunakan ulang
Syntaxfunction nama() { ... }
Parameter"Bahan" input yang diterima function
returnMengirim nilai keluar + menghentikan function
Echo vs returnEcho mencetak langsung; return mengembalikan nilai
VoidFunction tanpa return value (: void)
HoistingFunction bisa dipanggil sebelum deklarasinya
Best practiceSatu function satu tugas, pakai return

Klik tombol ini setelah menyelesaikan materi

📝

Quiz Bab 6

Uji pemahamanmu tentang Function