Andapun
dapat membuat fungsi-fungsi sendiri yang dapat memenuhi kebutuhan Anda.
Kali ini kita akan belajar bagaimana membuat sebuah fungsi sendiri.
Nama keren dari fungsi buatan sendiri adalah User Defined Function alias
UDF.
Sebuah fungsi dideklarasikan dengan sintaks sebagai berikut:
function namafungsi(arg1, arg2, ..., argn) {
...isi fungsi...
[return nilaibalik]
}
Namafungsi
adalah nama dari fungsi yang dideklarasikan tersebut dan aturan
pemberian namanya mengikuti aturan pemberian nama variabel serta tidak
boleh menggunakan nama fungsi yang telah ada.
Isi
fungsi haruslah merupakan kode program PHP yang valid. Anda dapat
menggunakan fungsi-fungsi built-in PHP dalam menyusun isi fungsi
tersebut.
Nilaibalik
adalah sebuah variabel yang menyimpan nilai yang akan dikembalikan oleh
fungsi tersebut pada kode program yang memanggilnya.
Arg1,
arg2, ..., argn adalah argumen-argumen yang akan diolah didalam fungsi
tersebut. Argumen dapat dianalogikan sebagai sebuah variabel. Argumen
bersifat optional, artinya tidak harus ada dalam setiap penggunaan UDF.
Namun jika sebuah UDF dideklarasikan dengan menggunakan argumen, maka
argumen tersebut harus dituliskan jika fungsi itu dipanggil.
Berikut adalah contoh sebuah fungsi sederhana:
<HTML>
<HEAD>
<TITLE> Fungsi </TITLE>
</HEAD>
<BODY>
<?
function garis($ukuran) {
echo "<HR COLOR='#FF0000' SIZE='$ukuran' NOSHADE>";
}
echo "Ini garis merah dengan ukuran 2 <BR>";
garis(2);
echo "Ini garis merah dengan ukuran 4 <BR>";
garis(4);
?>
</BODY>
</HTML>
Hasil yang diberikan oleh skrip di atas dapat dilihat pada gambar 1.
Fungsi
tersebut bernama garis() dan memiliki sebuah argumen bernama $ukuran.
Argumen ini akan menentukan ukuran dari garis yang digunakan.
Pada
PHP 3, sebuah fungsi harus dideklarasikan terlebih dahulu sebelum dapat
digunakan, tapi sejak PHP 4 sebuah fungsi dapat dideklarasikan
belakangan. Namun ada perkecualiannya, yaitu deklarasi fungsi tersebut
tidak boleh berada dalam sebuah struktur berkondisi atau di dalam fungsi
lain, sebab jika kondisi tidak terpenuhi atau fungsi lain tersebut
belum dipanggil, maka deklarasi fungsi tersebut akan tidak dikenal.
Bingung? Nih contohnya:
<HTML>
<HEAD>
<TITLE> Fungsi </TITLE>
</HEAD>
<BODY>
<?
echo "Ini garis biru dengan ukuran 2 <BR>";
garisbiru(2);
echo "Ini garis merah dengan ukuran 4 <BR>";
garismerah(4);
$tes = true;
if ($tes) {
function garismerah($ukuran) {
echo "<HR COLOR='#FF0000' SIZE='$ukuran' NOSHADE>";
}
}
function garisbiru($ukuran) {
echo "<HR COLOR='#0000FF' SIZE='$ukuran' NOSHADE>";
}
?>
</BODY>
</HTML>
Perhatikan
baik-baik contoh tersebut. Pada contoh ini fungsi garisbiru() dapat
dipanggil dengan baik walaupun dideklarasikan belakangan. Tapi fungsi
garismerah() tidak dapat dipanggil, sebab pada saat fungsi garismerah()
dipanggil, kondisi if ($tes) belum dievaluasi. Jika dijalankan, maka PHP
akan memberikan peringatan sebagai berikut:
Fatal error: Call to undefined function: garismerah() in c:\wwwroot\php\fungsi.php on line 11
Bandingkan dengan gambar 2.
Jika
fungsi garismerah() dipanggil setelah kondisi if ($tes) dan itupun $tes
harus bernilai true, maka fungsi garismerah() baru dapat berjalan
dengan baik.
Nah, sekarang kita akan bahas bagaimana menggunakan fungsi yang memiliki nilai balik. Berikut adalah contohnya:
<HTML>
<HEAD>
<TITLE> Fungsi </TITLE>
</HEAD>
<BODY>
<?
function luas($r) {
$lingk = M_PI * $r * $r;
return $lingk;
}
$r = 3;
echo "Lingkaran dengan jari-jari $r memiliki luas = ";
$luas = luas($r);
echo "$luas";
?>
</BODY>
</HTML>
Jika dijalankan, maka hasilnya adalah:
“Lingkaran dengan jari-jari 3 memiliki luas = 28.2743338823”.
Perhatikan
bahwa function luas() mempunyai nilai balik yaitu $lingk. Jika fungsi
tersebut dipanggil, maka sebuah variabel harus disiapkan untuk
“menangkap” nilai balik tersebut. Dalam contoh di atas variabel tersebut
adalah $luas, sehingga pemanggilan fungsi tersebut menjadi sebagai
berikut:
$luas = luas($r);
Sebagai alternatif dapat juga menggunakan bentuk seperti pada contoh di bawah ini:
<HTML>
<HEAD>
<TITLE> Fungsi </TITLE>
</HEAD>
<BODY>
<?
function luas($r) {
$lingk = M_PI * $r * $r;
return $lingk;
}
$r = 3;
echo "Lingkaran dengan jari-jari $r memiliki luas = " . luas($r);
?>
</BODY>
</HTML>
Pada
bentuk kedua ini, nilai balik tidak ditangkap dalam variabel lain, tapi
fungsi luas($r) langsung disambungkan dengan string "Lingkaran dengan
jari-jari $r memiliki luas = ". Ingat, untuk menggabungkan dua buah
string harus digunakan operator titik (.).
Nilai default argumen
Sebuah
argumen dapat memiliki nilai default. Jika sebuah argumen ditentukan
untuk memiliki nilai default, maka argumen tersebut boleh tidak ditulis
dalam pemanggilan fungsi. Jika tidak ditulis, maka nilai defaultnyalah
yang akan digunakan. Contoh:
<HTML>
<HEAD>
<TITLE> Fungsi </TITLE>
</HEAD>
<BODY>
<?
function luas($a=5,$t=5) {
$luas_sgt = 0.5 * $a * $t;
$teks = "Segitiga dengan alas $a ";
$teks .= "dan tinggi $t memiliki luas ";
$teks .= $luas_sgt;
return $teks;
}
echo luas();
echo "<BR>";
echo luas(3);
echo "<BR>";
echo luas(3,7);
?>
</BODY>
</HTML>
Jika dijalankan pada browser, hasilnya nampak seperti gambar 3.
Pada
pemanggilan fungsi luas() yang pertama, argumen sama sekali tidak
dituliskan, sehingga yang digunakan adalah nilai defaultnya, yaitu $a=5
dan $t=5. Pada pemanggilan fungsi luas() yang kedua, hanya sebuah
argumen yang dituliskan, dalam hal ini adalah argumen $a, sehingga nilai
$a adalah 3. Pada pemanggilan yang ketiga baik argumen $a maupun $t
diberi nilai, sehingga yang digunakan dalam fungsi adalah $a=3 dan $t=7.
Jika
Anda jeli, Anda mungkin bertanya-tanya, mengapa tidak ada pemanggilan
fungsi luas dengan cara seperti ini: luas(,7)? Maksudnya adalah nilai $a
dibiarkan default, sedangkan $t diberi nilai 7.
Jawabannya
adalah karena hal tersebut memang tidak diijinkan di PHP. Jika terdapat
beberapa argumen dalam sebuah fungsi tidak semua memiliki nilai
default, maka argumen yang memiliki nilai default harus diletakkan di
sebelah kanan argumen yang tidak memiliki default.
Anggaplah
argumen $t di atas tidak memiliki default sedangkan $a tetap memiliki
nilai default 5, maka deklarasi fungsi luas harus diubah menjadi sebagai
berikut:
function luas($t=5,$a) {
$luas_sgt = 0.5 * $a * $t;
$teks = "Segitiga dengan alas $a ";
$teks .= "dan tinggi $t memiliki luas ";
$teks .= $luas_sgt;
return $teks;
}
Dengan
demikian, jika diinginkan nilai $a default dan nilai $t adalah 7, maka
pemanggilan fungsi luas adalah sebagai berikut: luas(7).
Aturan
ini juga berlaku jika keduanya memiliki default, namun dalam
pemanggilan hanya salah satu saja yang akan diberi nilai. Jadi jelas toh
mengapa pemanggilan fungsi luas() dengan cara luas(,7) tidak diijinkan.
tampilan output tidak terlihat, namun lumayan membantu .
BalasHapusMy blog