Truyền tham chiếu và tham trị

Trong bài viết trước mình có nói về tham số và đối số trong lập trình WordPress, bây giờ chúng ta lại tìm hiểu thêm cách truyền tham chiếu và tham trị trong khi viết giao diện và plugin. Đầu tiên, để có thể đọc tiếp được xuống bên dưới thì bạn hãy xem qua khái niệm về tham chiếu và tham trị trước. Vì là học lập trình dựa trên mã nguồn WordPress nên bạn không cần hiểu quá chuyên sâu về các khái niệm.

1. Tham trị

Đối với tham trị thì khi chúng ta khai báo biến bên ngoài hàm, cho đến lúc truyền giá trị vào chạy trong hàm và sau khi hàm kết thúc thì giá trị của biến không thay đổi.

function sb_plus_number($a) {
	$a += 10;
}
$a = 1;
sb_plus_number($a);
echo $a; // Kết quả là số 1

Trong ví dụ bên trên là bạn truyền tham trị, có nghĩa là bạn truyền giá trị của biến $a vào trong hàm sb_plus_number, bên trong hàm này sẽ thực hiện câu lệnh cộng dồn số 10 vào biến $a. Tuy nhiên, sau khi kết thúc hàm thì giá trị của biến $a vẫn là số 1.

2. Tham chiếu

Đối với tham chiếu thì khi chúng ta khai báo biến bên ngoài hàm, cho đến lúc truyền giá trị vào chạy trong hàm và sau khi hàm kết thúc thì giá trị của biến truyền vào sẽ thay đổi nếu như nội dung bên trong của hàm có ảnh hưởng đến biến truyền vào.

function sb_plus_number(&$a) {
	$a += 10;
}
$a = 1;
sb_plus_number($a);
echo $a; // Kết quả là số 11

Trong ví dụ bên trên là bạn truyền tham số theo kiểu tham chiếu, bên trong hàm sb_plus_number sẽ cộng dồn giá trị của $a với số 10, sau khi kết thúc hàm thì giá trị của $a sẽ là 11.

function sb_plus_number(&$a) {
	$c = $a;
	$c += 10;
}
$a = 1;
sb_plus_number($a);
echo $a; // Kết quả là số 1

Trong ví dụ bên trên thì giá trị của $a vẫn là số 1 vì bên trong thân hàm không có dòng code nào ảnh hướng đến giá trị của biến $a.

function sb_plus_number(&$a) {
	$c = &$a;
	$c += 10;
}
$a = 1;
sb_plus_number($a);
echo $a; // Kết quả là số 11

Nhưng đối với ví dụ này thì sau khi thực hiện hàm thì giá trị của biến $a sẽ giống với biến $c.

$a = 1; // Gán số 1 cho biến $a
$b = $a; // Gán giá trị của biến $a cho biến $b
$a = 0; // Gán số 0 cho biến $a

echo 'a = ' . $a; // a = 0
echo '<br>';
echo 'b = ' . $b; // b = 1
echo '<br>';

$a = 1; // Gán số 1 cho biến $a
$b = &$a; // Gán giá trị của biến $a cho biến $b
$a = 0; // Gán số 0 cho biến $a

echo 'a = ' . $a; // a = 0
echo '<br>';
echo 'b = ' . $b; // b = 0
echo '<br>';

$a = 1; // Gán số 1 cho biến $a
$b = &$a; // Gán giá trị của biến $a cho biến $b
$b = 0; // Gán số 0 cho biến $b

echo 'a = ' . $a; // a = 0
echo '<br>';
echo 'b = ' . $b; // b = 0
echo '<br>';

Tương tự, bạn có thể lần lượt chạy thử các ví dụ như bên trên để hiểu rõ hơn về cách truyền tham trị và truyền tham chiếu trong khi lập trình WordPress. Có đôi khi bạn cần phải truyền tham chiếu để sau khi thực hiện hàm thì giá trị của tham số đầu vào sẽ thay đổi theo.

Leave your comment

Leave a Reply

Your email address will not be published. Required fields are marked *