Minggu, 06 Maret 2011

Passing Argumen di PHP

Passing argumen adalah variabel yang diberikan ke method dalam PHP. Ada dua tipe data variabel passing pada method yaitu adalah pass-by-value dan pass-by-reference.



Passing By Value

Variable yang diberikan oleh parameter hanya akan diolah didalam fungsi, variable yang berada diluar fungsi akan tetap. Dengan kata lain variable yang dipakai oleh suatu fungsi tidak akan mempengaruhi variable yang ada diluar. Semua nilai yang di-pass masuk atau keluar dari fungsi, artinya PHP membuat  kopian dari nilai original dan nilai kopian itulah yang kita akses  dan kita manipulasi, bukan nilai originalnya. Nilai original tidak akan berubah, walaupun telah dilakukan manipulasi pada nilai.

Ketika pass-by-value terjadi, method membuat sebuah salinan dari nilai variable yang dikirimkan ke method. Walaupun demikian, method tidak dapat secara langsung memodifikasi nilai variabel pengirimnya meskipun parameter salinannya sudah dimodifikasi nilainya di dalam method.

Simpan kode di bawah dengan nama passbyval.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Fungsi Pass By Value</title>
</head>
<body>
<p>Hasil Pengolahan Fungsi Pass By Value</p>
<?php
function jumlah($nilai) {
$nilai++;
}
$input=30;
jumlah($input);
echo $input;
?>
</body>
</html>



Keterangan:
Pada fungsi jumlah($input); jumlah dipanggil, fungsi tersebut akan memasukkan nilai dari variabel $input kedalam argumennya, jadi disini argumen fungsi jumlah adalah 30. Selanjutnya PHP meng-copy nilai asli tersebut, kemudian hasil copy-nya digunakan untuk proses manipulasi fungsi, sedangkan nilai yang asli dibiarkan tidak berubah.

Proses manipulasinya yaitu:
$value++;
$value = $value + 1
$value = 30 + 1
$value = 31


Untuk output,
echo $input;

Passing by value tidak merubah nilai variabel aslinya jika nilai argumen dalam fungsi berubah. Jadi outputnya adalah 30.




  Passing By Reference

Passing by reference kebalikan dari Passing By Value, hasil olahan yang telah diproses di dalam fungsi dapat digunakan di luar fungsi, dengan kata lain value yang di luar fungsi akan turut berubah seiring perubahan yang terjadi pada variable didalam fungsi. Passing By Reference memberikan nilai aslinya untuk diakses dan dimanipulasi. Untuk  mengubah jadi passing by value menjadi reference, kita hanya cukup menambahkan  operator '&' pada argumennya.

Ketika sebuah pass-by-reference terjadi, alamat memori dari nilai pada sebuah variabel dilewatkan pada saat pemanggilan method. Hal ini berarti bahwa method menyalin alamat memori dari variabel yang dilewatkan pada method. Ini tidak seperti pada pass-by-value, method dapat memodifikasi variabel asli dengan menggunakan alamat memori tersebut, meskipun berbeda nama variabel yang digunakan dalam method dengan variabel aslinya, kedua variabel ini menunjukkan lokasi dari data yang sama.


Contoh kode passing by reference:
Simpan kode di bawah dengan nama passbyref.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Fungsi Pass By Reference</title>
</head>
<body>
<p>Hasil Pengolahan Fungsi Pass By Reference</p>
<?php
function jumlah(&$nilai) {
$nilai++;
}
$input=30;
jumlah($input);
echo $input;
?>
</body>
</html>


Pada passing by reference, nilai yang diakses & dimanipulasi adalah nilai aslinya, dengan begitu hasil manipulasi fungsilah yang gunakan sebagai outputnya, yaitu 31.



0 komentar:

Posting Komentar