Hàm trong PHP
Hàm do người dùng định nghĩa
Cú pháp cơ bản của một hàm:
<?php function NameFunction($parameter_1, parameter_2, /* ..., */ $parameter_n) { function_body } ?>
Lưu ý:
- Trong PHP để khai báo một hàm ta luôn có từ function đi trước tên hàm.
- Một hàm hợp lệ là tên hàm phải được bắt đầu bằng các chữ cái hoặc dấu gạch dưới _.
- Hàm không cần được định nghĩa trước khi gọi, trừ khi một hàm định nghĩa có điều kiện thì phải xử lý điều kiện trước khi gọi hàm. Xem tiếp nội dung ở hai ví dụ dưới đây.
Ví dụ hàm định nghĩa có điều kiện:
<?php $condition = true; /* Không thể gọi hàm Hello ở đây Nhưng có thể gọi hàm Welcome */ Welcome(); if ($condition) { function Hello() { echo "Hello ..."; } } /* Tại đây có thể gọi hàm Hello */ if ($condition) Hello(); function Welcom() { echo "Welcome to ..."; } ?>
Ví dụ hàm được định nghĩa trong một hàm khác:
<?php function Hello() { function Welcome() { echo "Welcome to ..."; } } // Không thể gọi hàm Welcome vì nó được định nghĩa ở trong hàm Hello. Hello (); // Tại đây có thể gọi hàm Welcome. Welcome(); ?>
Hàm với tham số
- Hàm trong PHP còn cho phép truyền một tham số.
- Số lượng tham số tùy thuộc vào nhu cầu sử dụng của lập trình viên.
- Những tham số được truyền vào làm việc như một biến ở trong hàm.
<?php function sum($numFirst, $numSecond) { $sum = $numFirst+ $numSecond; echo "Sum : "$sum; } sum(11, 21); // In ra màn hình giá trị: 32 ?>
Ngoài ra, hàm trong PHP còn giúp lập trình viên có thể mặc định giá trị của tham số.
<?php function FunctionWithParameters($str = "Hello") { echo $str." ."; } FunctionWithParameters(); FunctionWithParameters(null); FunctionWithParameters("Welcome to "); ?>
Kết quả:
Hello . . Welcome to .
Phân tích:
- Dòng 6: Gọi hàm
FunctionWithParameters
: Lúc này giá trị của$str
được mặc định làHello
nếu bạn không truyền tham số vào hàm. - Dòng 7-8: Gọi hàm
FunctionWithParameters
với giá trị của$str
lần lượt lànull
vàWelcome to ...
.
Hàm với tham số là một tham chiếu
Xét ví dụ hoán vị hai số dưới đây:
<?php $numberFirst = 10; $numberSecond = 20; function swap($numFirst, $numSecond) { $tmp = $numberFirst; $numFirst = $numSecond; $numSecond = $tmp; } swap($numberFirst, $numberSecond); echo $numberFirst; echo $numberSecond; ?>
Phân tích:
- Ở ví dụ trên hiện thực một hàm có tác dụng đổi giá trị giữa hai biến. Nhưng vấn đề nảy sinh ở hàm trên là giá trị của
$numberFirst = 10
và$numberSecond = 20
. - Lý do là khi là hàm
swap
sẽ tự khởi tạo ra hai biến mới lần lượt là$numFirst
và$numSecond
có cùng giá trị lần lượt với$numberFirst
,$numberSecond
. Vì vậy trong logic của hàm chỉ sẽ hoán đối giá trị của$numFirst
và$numSecond
.
Vậy, muốn có thể hoán vị giá trị của hai biến $numberFirst
và $numberSecond
thì cần truyền tham số là một tham trị.
<?php $numberFirst = 10; $numberSecond = 20; function swap(&$numFirst, &$numSecond) { $tmp = $numberFirst; $numFirst = $numSecond; $numSecond = $tmp; } swap($numberFirst, $numberSecond); echo $numberFirst; echo $numberSecond; ?>
Vậy muốn đổ giá trị của biến trong hàm bạn cần sử dụng toán tử tham chiếu &
.
Tổng kết
Trong lập trình, việc sử dụng hàm là kiến thức cơ bản và rất quan trọng. Để cho code tối ưu và dễ hiểu thì tùy vào cách sử dụng hàm nhưng nên tránh lạm dụng dùng hàm.