Sepanjang pembuatan function PHP, kita bisa menambah argument atau parameter sebagai nilai input. Dalam tutorial belajar PHP kali ini akan dibahas tentang cara memeriksa tipe data argument untuk fungsi PHP.
Pentingnya Pengecekan Tipe Data Argument
Dalam pembuatan function PHP, selain merancang cara kerja fungsi tersebut, kita juga harus memperkirakan berapa banyak parameter yang dibutuhkan. Sebuah function bisa saja memiliki 1, 2 atau 5 parameter, namun ada juga yang tanpa parameter sama sekali.
Tergantung tujuannya, sebuah fungsi hanya bisa menerima tipe data tertentu sebagai argument. Sebagai contoh, untuk function yang berhubungan dengan matematika, hanya bisa menerima argument dengan tipe data angka (integer atau float). Atau untuk function penghitung kata, harus di isi tipe data string sebagai argument.
Jika kita hanya satu-satunya pengguna function, maka masalah perbedaan tipe data argument bisa di minimalisir. Namun jika terdapat kemungkinan function tersebut akan dipakai pihak lain, tipe data argument perlu di periksa sebelum di proses lebih lanjut.
Jika tipe data argument tidak sesuai, biasanya PHP akan mengeluarkan pesan error. Atau malah yang lebih berbahaya, tidak ada pesan error sama sekali namun hasil yang dihasilkan salah.
Cara yang lebih elegan untuk mengatasi masalah ini adalah dengan menambah kode program untuk memeriksa tipe data parameter sebelum masuk ke pemrosesan di dalam function.
Pengecekan tipe data dilakukan pada awal function, dan jika tipe data tidak sesuai, kita bisa buat pesan ke user. Memeriksa apakah suatu argument merupakan bagian dari tipe data tertentu bisa dilakukan dengan fungsi khusus yang telah disediakan PHP.
Berikut adalah daftar fungsi untuk memeriksa tipe data di dalam PHP:
- is_array($var):Â fungsi pengecekan apakah tipe data adalah array
- is_bool($var):Â fungsi pengecekan apakah tipe data adalah boolean
- is_double($var):Â fungsi pengecekan apakah tipe data adalah float
- is_float($var):Â fungsi pengecekan apakah tipe data adalah float
- is_int($var):Â fungsi pengecekan apakah tipe data adalah integer
- is_integer($var):Â fungsi pengecekan apakah tipe data adalah integer
- is_long($var):Â fungsi pengecekan apakah tipe data adalah integer
- is_null($var):Â fungsi pengecekan apakah tipe data adalah null
- is_numeric($var):Â fungsi pengecekan apakah tipe data adalah angka (integer dan float)
- is_object($var):Â fungsi pengecekan apakah tipe data adalah objek
- is_real($var):Â fungsi pengecekan apakah tipe data adalah float
- is_resource($var):Â fungsi pengecekan apakah tipe data adalah resource (misalnya variabel yang menampung koneksi ke database)
- is_scalar($var):Â fungsi pengecekan apakah tipe data adalah scalar (scalar adalah penyebutan untuk tipe data dasar seperti integer, float, string atau boolean. Tipe data array, object dan resource bukan scalar)
- is_string($var):Â fungsi pengecekan apakah tipe data adalah string
Cara Pengecekan Tipe Data Argument Fungsi
Fungsi-fungsi diatas bisa dimanfaatkan untuk pengecekan tipe data variabel, dan tentu saja juga argument. Agar lebih mudah dipahami, saya telah merancang fungsi pangkat()Â untuk melakukan pemangkatan bilangan.
Fungsi pangkat() di rancang dengan 2 nilai input atau parameter. Parameter pertama adalah angka yang akan dihitung, dan parameter kedua untuk nilai pangkatnya.
Perintah pangkat(2,3) berarti 2 pangkat 3. Sedangkan pangkat(2,8) berarti 2 pangkat 8. Kedua parameter harus di isi angka, dan khusus untuk nilai pangkat, harus dalam bentuk angka bulat (integer).
Berikut kode program untuk fungsi pangkat():
<?php function pangkat($nilai, $pangkat) { // Jalankan function hanya jika tipe argument sesuai if (is_numeric($nilai) and is_int($pangkat)) { $hasil = 1; for ($i=1; $i<=$pangkat; $i++) { $hasil = $hasil * $nilai; } return $hasil; } else { // Jika tipe data argument tidak cocok return "Tipe data argument harus berupa angka"; } } //Test beberapa kasus inputan fungsi pangkat() echo pangkat(5,2); echo "<br>"; echo pangkat(5.6,2); echo "<br>"; echo pangkat(2,8); echo "<br>"; echo pangkat(5,2.9); echo "<br>"; echo pangkat("lima",2); echo "<br>"; ?>
Function pangkat() ini terasa sedikit panjang, namun jika teman-teman sudah mengikuti seluruh tutorial PHP di duniailkom, saya yakin tidak akan kesulitan memahaminya.
Sesuai namanya, function pangkat() saya rancang untuk menghitung nilai pangkat. Variabel $nilai dan $pangkat akan menjadi parameter di dalam function.
Di baris 4, saya memeriksa kedua parameter menggunakan logika if. Parameter $nilai dan $pangkat haruslah berisi angka, sehingga pemanggilan is_numeric($nilai) dan is_int($pangkat) langsung disambung dengan operator logika and.
Jika pemeriksaan ini tidak terpenuhi, maka blok else di baris 11-14 akan berjalan. Hasilnya, akan tampil kalimat "Tipe data argumen harus berupa angka" untuk memberitahu user bahwa tipe argument harus berupa angka.
Hanya jika kondisi is_numeric() dan is_int() terpenuhi, kode program akan masuk ke blok di baris 5-9. Blok kode ini berisi perulangan for untuk mencari hasil pemangkatan dan mengembalikannya dengan perintah return.
Untuk menguji function ini, antara baris 18-22 terdapat pemanggilan fungsi pangkat() dengan beberapa kondisi. Jika argument yang di input tidak sesuai, akan tampil pesan kesalahan yang kita rancang, tidak sekedar error bawaan PHP.
Teknik seperti ini bisa dipakai untuk menghindari error program dari PHP dan memberikan fleksibilitas untuk melakukan pencegahan jika tipe data yang di input bukan yang seharusnya.
Sepanjang tutorial ini kita telah membahas cara memeriksa tipe data parameter atau argument function. Dalam tutorial belajar PHP selanjutnya, akan dibahas terkait cara membuat default parameter pada fungsi PHP.
maaf kak, saya mau minta penjelasan bagian script yg ini
$hasil=1;
for ($i=1;$i<=$pangkat;$i++)
{
$hasil=$hasil*$nilai;
}
return $hasil;
Sebenarnya itu cuma perulangan 'sederhana' kok, tapi jika kurang paham, mungkin bisa mempelajari kembali cara penulisan perulangan for, dan cara penggunaan operator assignment PHP :)
Secara garis besar, kode diatas akan melakukan perulangan untuk mengalikan sebuah nilai beberapa kali (tergantung argumen yang diberikan)
makasih gan tutorialnya sangat. ada yang ingin saya tanyakan. untuk pengecekan bisakah dilakukan tanpa fungsi
Maksudnya pengecekan apa y gan? Kalau pengecekan tipe data, setahu saya yang paling gampang memang menggunakan fungsi seperti is_array() atau is_int(). Kalau tanpa fungsi sepertinya agak susah…
$hasil=1;
for ($i=1;$i<=$pangkat;$i++)
{
$hasil=$hasil*$nilai;
}
return $hasil;
bingung nih min perulangan di bagian itu mohon di perjelas :)
Ini perulangan PHP gan, untuk jelasnya mungkin bisa kesini: Tutorial perulangan for PHP
Untuk penulisan dan cara kerja perulangan for nya ane udah paham gan. Tapi saya juga masih belum paham, sama kayak agan2 yang diatas ane ini. Masalahnya juga sama skrip koding yg di dalam if nya.
Itu kan kalo diterjemahin ke angka hasilnya gini gan:
Misal argumen diisi gini = pangkat (7,2)
$hasil=1; //Ini nilainya 1 kan??
for ($i=1;$i<=$pangkat;$i++) //ini for nya $i<=2 (ngikut argumen yg ane buat barusan)
{
$hasil=$hasil*$nilai; //tadi $hasil kan 1, karna di for $i<=2 jadi $hasil = 2,
} //kalo gitu $hasil=2*7
return $hasil; //nah, hasilnya mestinya 14, kalo ngikuti alur perulangan for nya
Oh, yang bagian itu y gan…
Kalau menggunakan fungsi pangkat(7,2), maka perulangannya akan menjadi sebagai berikut:
$hasil=1;
for ($i=1;$i<=2;$i++) { $hasil=$hasil*$nilai; } return $hasil;
Perulangan diatas akan diproses 2x gan, bukan 1 kali,
sehingga pada perulangan pertama:
$hasil=$hasil*$nilai; // $hasil = 1 * 7 = 7, bukan 2 * 7
untuk perulangan kedua:
$hasil=$hasil*$nilai; // $hasil = 7 * 7 = 49
Perintah "$i<=2" bukan berarti "$hasil=2*7", ini hanya sebagai penanda berapa kali perulangan akan dijalankan.
$hasil=1 itu untuk mewadahi nilai pangkat yang di loop ya gan?
Ane sekarang udah paham gan, di script ini
$hasil=$hasil*$nilai; // $hasil = 1 * 7 = 7, (hasil 7 tersebut disimpan ke dalam $hasil )
(lalu untuk perulangan kedua: hasil simpanan $hasil yang terakhir dipnggil untuk diproses)
$hasil=$hasil*$nilai; // $hasil = 7 * 7 = 49
Iya gan, seperti itu.. :)
Yups benar kira2 spt itu, memory terakhir yang didefinisikan yg di munculkan…. misal : $a = 1, kemudian di ketik lagi $a= 2, trs kita panggil nilai a skrg berapa….? maka echo $a ; // 2. Ingat lagi terori tentang memory, di web DuniaIlkom ada disebutkan tentang memory ini….sebelumnya terima kasih ilmu nya gan, sangat bermanfaat utk orang indonesia
Siip, terimakasih juga tambahannya…
akhirnya setelah saya menyimak komen agan, saya juga ikut mengerti.
makasih gan
Sama2 gan, senang bisa membantu :)
Mas itu link "DEFAULT PARAMETER" nya malah ke halaman variabel parameter mas, hehehe
Btw, tutorialnya duniailkom ini enak, mudah dipahami:)
Lanjutkan mas, manfaat banget :D
Eh iya, benar mas. Mungkin karena saking semangatnya buat tutorial sampai bersalahan, hehe…
Terimakasih koreksinya mas, segera saya perbaiki.
Pak, saya mau tanya.
Kalo "isset" itu pengecekan argument juga kah?
Apakah ada tutorialnya, Pak?
Terima kasih.
Semoga berkah usaha tutorialnya, Pak:)
Lanjut kesini mas: Cara Membuat Validasi Form PHP (fungsi isset dan empty).
Mau tanya mas, kenapa bagian else itu bukan echo untuk menampilkan "Type data argumen harus berupa angka"?
Kenapa ditulis return dan bukan echo?
Kalau membuat kode program dengan function, lebih disarankan menggunakan return mas, karena mungkin saja hasil fungsi ini ingin diproses lagi, misalnya:
$hasil = pangkat(2,8);
// variabale $hasil akan diproses lagi sebelum ditampilkan
Kalau hasil function langsung di echo, kita tidak bisa menjalankan kode diatas, setiap pemanggilan fungsi pangkat akan langsung ditampilkan ke web browser.
Mas Andre mau tanya sedikit..
Bisa tidak ya fungsi is_numeric digunakan untuk validasi nomor telepon pada form?
Jika bisa, bagaimana cara memberi batasan digit nomor yg dimasukkan (min length)? Karena kan fungsi is_numeric hanya mem-validasi angkanya, sedangkan nomor telpon minimal terdiri dari 6/7 angka.
thanks :)
Untuk validasi seperti itu cocoknya pakai regular expression mas. Karena mas William sudah punya eBook PHP Uncover, bisa langsung di cek bab tentang pemrosesan form. Disana saya sudah bahas cara penggunaan regex untuk validasi inputan form :)
Tutornya mudah dipahami gan,
yg bagian ini yg ngejelimet,
tapi alhamulilah agak cerah sekarang
Lanjutkan gan tutor-tutor dunia ilkom sangat bermanfaat
terutama bagi saya pemula :D
Siip gan..
Bang Andre saya mau dong di email kalau ebook atau Tutorial php yang udah bang andre buat dicetak dalam versi buku atau ebook.biar mudah kalau bseok mau buka buka lagi materi dari bang andre.
Terima Kasih
Siap, silahkan di cek emailnya.. cara pemesanan eBook maupun buku cetak sudah saya kirim ke email, terimakasih.
mau tanya mas , cara ngecek angka 1,2,"3",4,5 klo di situ ada angka 3 gimana yaa?? #mohondibantu
hasil tampilan saya , kok jadi perkalian min
misalnya saya ketikkan
echo pangkat(5,7);
echo "<br/>";
hasilnya jadi 35
mohon bantuannya min
Mantap bang andre…
Penjelasannya sangat mudah dipahami, belum ada blog lain berbahasa indonesia yang menjelaskan sedetail ini. BTW e-book HTML uncovernya mantap banget, saya sudah membaca semua materi di dalamnya. Next saya akan membeli e-book PHP Uncover, OOP PHP, MySQL, JavaScript, CSS dan Mungkin nantinya lanjut ke Laravel. Do'akan agar nantinya saya bisa membuat project toko online berbasis Laravel lengkap dengan integrasi Payment Gateway. Karena dari awal tujuan saya belajar full stack web developer secara otodidak hanya untuk membangun toko online impian saya.
Oh ya, sedikit saran dari saya sebaiknya untuk setiap pembahasan diberikan 2-3 contoh studi kasus agar teori yang sudah dipelajari tidak lupa di keesokan harinya :) karena kemampuan saya untuk mengingat sudah mulai turun di umur yang sudah tidak muda lagi untuk belajar :)
Sekali lagi terima kasih banyak atas ilmunya bang Andre, semoga sehat selalu dan dilancarkan rejekinya, amin…
Aamiin… terimakasih untuk review dan masukannya mas. Semoga lancar proses belajarnya dan bisa membuat toko online sendiri :)