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:
- Reusable — tulis sekali, pakai berkali-kali.
- Terorganisir — kode terpecah menjadi bagian-bagian kecil yang jelas tujuannya.
- Mudah diperbaiki — jika ada bug, cukup perbaiki di satu tempat.
- Mudah dibaca — nama function menjelaskan apa yang dilakukan kode.
Basic Function
<?php
// Define function
function greet() {
echo "Hello, World!\n";
}
// Call function
greet(); // Hello, World!
greet(); // Hello, World!
?>
Perhatikan struktur penulisan function:
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.
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
// ✅ 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 daricalc(). - Nama tidak boleh diawali angka, dan tidak boleh sama dengan keyword PHP (
echo,if,for, dst).
Function dengan Parameter
<?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:
| Istilah | Arti | Contoh |
|---|---|---|
| Parameter | Variabel yang dideklarasikan di definisi function | $name di function greet($name) |
| Argument | Nilai yang dikirim saat memanggil function | "Andi" di greet("Andi") |
Return Value
<?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:
- Mengirim nilai keluar dari function ke pemanggilnya.
- Menghentikan eksekusi function saat itu juga.
Kode setelah return tidak akan pernah dijalankan:
<?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:
| Echo | Return |
|---|---|
| Mencetak output langsung ke layar | Mengirim nilai kembali ke pemanggil |
| Tidak bisa ditangkap nilainya | Bisa disimpan ke variabel |
echo di dalam function = efek samping | return = hasil function |
| Tidak menghentikan function | Menghentikan function |
<?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!
?>
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
// 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
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
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
// ❌ Function dengan nama sama dideklarasikan dua kali
function greet() {
echo "Halo\n";
}
// function greet() { // Fatal error: Cannot redeclare greet()
// echo "Hai\n";
// }
?>
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
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
function greet() {
return "Halo!";
}
// ❌ Tanpa kurung = referensi function, bukan memanggil
// echo greet; // Error
// ✅ Dengan kurung = memanggil
echo greet(); // Halo!
?>
Pro Tips
- Satu function, satu tugas — jika function melakukan dua hal berbeda, pecah menjadi dua function.
- Gunakan
returnbukanechodi dalam function (kecuali function memang khusus mencetak). - Nama function = kata kerja —
calculateTotal(),sendEmail(),getUser(). - Jangan ulangi kode (DRY — Don't Repeat Yourself): jika kamu menulis kode yang sama dua kali, kemungkinan besar itu harus jadi function.
Exercise
- Buat function untuk calculate luas persegi panjang
- Buat function untuk convert Celsius ke Fahrenheit
- Apa perbedaan echo dan return?
- Buat function
isEven($num)yang mengembalikantruejika angka genap, lalu gunakan di dalam loop untuk mencetak bilangan genap 1-10 - Buat function
sapa($nama, $waktu)yang mengembalikan sapaan sesuai waktu ("Selamat pagi", "Selamat siang", "Selamat malam"), lalu panggil untuk 3 nama berbeda
Summary
| Poin | Penjelasan |
|---|---|
| Function | Block kode yang bisa digunakan ulang |
| Syntax | function nama() { ... } |
| Parameter | "Bahan" input yang diterima function |
return | Mengirim nilai keluar + menghentikan function |
| Echo vs return | Echo mencetak langsung; return mengembalikan nilai |
| Void | Function tanpa return value (: void) |
| Hoisting | Function bisa dipanggil sebelum deklarasinya |
| Best practice | Satu function satu tugas, pakai return |
Klik tombol ini setelah menyelesaikan materi
Quiz Bab 6
Uji pemahamanmu tentang Function