Page Nav

HIDE

Grid

GRID_STYLE

Breaking News

latest

Membuat Fungsi Sendiri Pada PHP

Pada artikel - artikel sebelumnya sudah kita bahas cara menggunakan fungsi-fungsi yang ada di PHP dengan metode Object Oriented Programmin...


Pada artikel - artikel sebelumnya sudah kita bahas cara menggunakan fungsi-fungsi yang ada di PHP dengan metode Object Oriented Programming (OOP). Kali ini kita akan coba membahas bagaimana membuat sebuah fungsi sendiri sesuai dengan kebutuhan.
Sebuah fungsi dideklarasikan dengan sintaks sebagai berikut:
function nama_fungsi(argumen1, argumen2, ..., argumenn) {
...isi fungsi...
[return nilai balik]
}
Nama fungsi 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.
Nilai balik adalah sebuah variabel yang menyimpan nilai yang akan dikembalikan oleh fungsi tersebut pada kode program yang memanggilnya.
argumen1, argumen2, ..., argumenn 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 contoh fungsi sederhana:
<HTML>
<HEAD>
<TITLE> Fungsi </TITLE>
</HEAD>
<BODY>
<?php
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>
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  dan diatasnya 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>
<?php
echo "Ini garis biru dengan ukuran 2 <br />";
garisbiru(2);
echo "Ini garis merah dengan ukuran 4 <br />";
garismerah(4);

$hasil = true;

if ($hasil) {
    function garismerah($ukuran) {
        echo "<hr color='#FF0000' size='$ukuran' noshade>";
    }
}

function garisbiru($ukuran) {
    echo "<hr color='#FF0000' 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 ($hasil) belum dievaluasi. Jika dijalankan, maka PHP akan memberikan peringatan sebagai berikut :
Fatal error: Call to undefined function: garismerah() in c:\xampp\htdocs\fungsi.php on line 11
Jika fungsi garismerah() dipanggil setelah kondisi if ($hasil) dan itupun $hasil 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>
<?php
function luas($r) {
    $lingkaran = M_PI * $r * $r;
    return $lingkaran;
}

$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 $lingkaran. 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>
<?php
function luas($r) {
    $lingkaran = M_PI * $r * $r;
    return $lingkaran;
}

$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>
<?php
function luas($a=5,$t=5) {
    $luas_segitiga = 0.5 * $a * $t;
    $teks = "Segitiga dengan alas $a ";
    $teks .= "dan tinggi $t memiliki luas ";
    $teks .= $luas_segitiga;
    return $teks;
}

echo luas();
echo "<br />";
echo luas(3);
echo "<br />";
echo luas(3,7);
?>
</BODY>
</HTML>
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_segitiga = 0.5 * $a * $t;
    $teks = "Segitiga dengan alas $a ";
    $teks .= "dan tinggi $t memiliki luas ";
    $teks .= $luas_segitiga;
    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. Selamat belajar.

Tidak ada komentar