Belajar pemrograman web dengan Php - Membuat fungsi sendiri
Membuat Fungsi Sendiri Pada PHP
Pada
bahasan-bahasan kita yang lalu Anda telah belajar bagaimana menggunakan
fungsi-fungsi yang ada di PHP. 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.

0 Komentar:
Posting Komentar
Berlangganan Posting Komentar [Atom]
<< Beranda