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