Bài 12: Hàm (FUNCTIONS) PHP
Các hàm trong php cũng như bao ngôn ngữ lập trình khác. Một hàm là một phần code mà thực hiện một số quá trình và trả về một giá trị Như bạn đã thấy các hàm như fopen(), fread() ở bài 11. Chúng được xây dựng sẳn trong thư viện PHP. Trên thực tế đã có hơn 1000 hàm xây dựng sẳn, tuy nhiên để đáp ...
Các hàm trong php cũng như bao ngôn ngữ lập trình khác. Một hàm là một phần code mà thực hiện một số quá trình và trả về một giá trị
Như bạn đã thấy các hàm như fopen(), fread() ở bài 11. Chúng được xây dựng sẳn trong thư viện PHP. Trên thực tế đã có hơn 1000 hàm xây dựng sẳn, tuy nhiên để đáp ứng yêu cầu đặc biệt, đặc thù nào đó mà hàm php không thể đáp ứng được thì PHP cung cấp cho chúng ta một tùy chọn để tự tạo, tự định nghĩa hàm đáp ứng mục đích sử dụng của chúng ta.
Tạo hàm
Thật dể dàng để tạo hàm trong PHP. Chúng ta sẽ thực hành tạo một hàm đơn giản là ghi một message in ra màn hình khi bạn gọi nó:
<html>
<head>
<title>Writing PHP Function</title>
</head>
<body>
<?php
/* Defining a PHP Function */
function writeMessage() {
echo “You are really a nice person, Have a nice time!”;
}
/* Calling a PHP Function */
writeMessage();
?>
</body>
</html>
Kết quả khi chạy sẽ in ra trên trình duyệt : You are really a nice person, Have a nice time!
Đối số của hàm
PHP cho bạn một tùy chọn đưa đối số vào bên trong hàm. Bạn có thể đưa nhiều đối số nếu bạn muốn. Các đối số này sẽ làm việc giống như biến bên trong hàm.
Ví dụ tao thêm 2 đối số là số nguyên vào hàm và cộng chúng lại với nhau sau đó in ra màn hình:
<html>
<head>
<title>Writing PHP Function with Parameters</title>
</head>
<body>
<?php
function addFunction($num1, $num2) {
$sum = $num1 + $num2;
echo “Sum of the two numbers is : $sum”;
}
addFunction(10, 20);
?>
</body>
</html>
Kết quả là bao nhiêu ????
Đối số là tham chiếu
Chắc các bạn đã từng học qua một ngôn ngữ lập trình đều có nghe đến khái niệm biến tham chiếu và tham trị. Ở đây xin lược giải như sau :
- Biến tham trị : đây là loại biến mà khi sử dụng nó sẽ tạo ra một bản sao của biến, và khi kết thúc sử dụng thì giá trị của biến không thay đổi
- Biến tham chiếu : thì ngược lại với tham trị, tức là khi sử dụng là chúng ta đem cả bản gốc của biến thực hiện, do vậy khi kết thúc giá trị của biến cũng sẽ thay đổi theo nếu trong quá trình sử dụng có tác động thay đổi giá trị của biến. Và trước biến ta thêm ký tự & để thông báo cho hệ thống ta muốn dùng biến là tham chiếu.
Xét ví dụ :
<html>
<head>
<title>Passing Argument by Reference</title>
</head>
<body>
<?php
function addFive($num) { //biến $num là tham trị
$num += 5;
}
function addSix(&$num) { //biến $num được khai báo như tham chiếu
$num += 6;
}
$orignum = 10;
addFive( $orignum );
echo “Original Value is $orignum<br />”;
addSix( $orignum );
echo “Original Value is $orignum<br />”;
?>
</body>
</html>
Kết quả :
Original Value is 10: khi gọi hàm addFive, vì là biến tham trị nên khi ra khỏi hàm thì giá trị biến $orignum không thay đổi
Original Value is 16: khi gọi hàm addSix, vì ta đã truyền vào là tham chiếu, nên vào trong hàm giá trị được cộng lên 6 và khi thoát khỏi hàm giá trị mới của biến được mang theo.
Hàm trả về giá trị
Một hàm có thể trả về một giá trị bằng việc sử dụng phát biểu return, nó có thể trả về là một giá trị đơn, một chuỗi,mãng hoặc cả một đối tượng (object).
Trong 2 ví dụ trên là chúng ta xây dựng hàm không có trả về giá trị, vậy khi chúng ta cần gọi hàm để tính toán, thực hiện một yêu cầu nào đó rồi nhận kết quả trả về để chúng ta làm việc tiếp với giá trị đó thì chúng ta phải đưa phát biểu return vào bên trong hàm.
Lưu ý là bất kể khi nào phát biểu return được gọi thì nó sẽ thoát khỏi hàm ngay mặc dù phía sau phát biểu return còn một vài đoạn code khác.
Ví dụ:
<html>
<head>
<title>Writing PHP Function which returns value</title>
</head>
<body>
<?php
function addFunction($num1, $num2) {
$sum = $num1 + $num2;
return $sum; //trả về giá trị sau khi tính tổng.
}
$return_value = addFunction(10, 20);//gọi hàm tính và kết quả trả về được gán cho biến $return_value.
echo “Returned value from the function : $return_value”;
?>
</body>
</html>
Kết quả: Returned value from the function : 30.
Gán giá trị mặc định cho đối số hàm
Bạn có thể đặt một giá trị mặc định cho đối số, nếu hàm được gọi nhưng không truyền đối số đó.
<html>
<head>
<title>Writing PHP Function which returns value</title>
</head>
<body>
<?php
function printMe($param = NULL) {
print $param;
}
printMe(“This is test”);
printMe();
?>
</body>
</html>
Trong ví dụ trên hàm printMe đã gán giá trị mặc định cho đối số $param, nếu bên ngoài khi gọi hàm mà không truyền giá trị cho biến $param thì đối số này sẽ lấy giá trị mặc định để thực hiện trong hàm.
Kết quả là : This is test //vì $param bằng null khi tao gọi printMe() mà không truyền giá trị.
Note: nếu các bạn không đặt giá trị mặc định cho $param thì khi gọi printMe() sẽ bị báo lổi vì thiếu đối số, hoặc hàm không tồn tại, vì hệ thống ghi nhận printMe($param), không phải là printMe().
Gọi hàm theo cách tự động
<html>
<head>
<title>Dynamic Function Calls</title>
</head>
<body>
<?php
function sayHello() {
echo “Hello<br />”;
}
$function_holder = “sayHello”;
$function_holder();
?>
</body>
</html>
Các bạn chú ý 2 câu lệnh :
$function_holder = “sayHello”;
$function_holder();
Thực chất là như ta gọi hàm sayHello() mà thôi, sự hổ trợ này trong PHP cho phép bạn thực hiện trong những trường hợp điều kiện nào đó ta cần gọi hàm 1 hoặc hàm 2 hoặc …..
Kết quả: Hello.
Tóm tắt bài học: Việc tạo hàm trong PHP vô cùng đơn giản phải không các bạn, chỉ cần từ khóa function đứng đầu, kế đến là tên hàm và đối số nếu có.
Cú pháp: function function_name(param).
Ta có thể gọi hàm bằng cách gọi tên hàm và truyền giá trị cho đối số nếu có : function_name(value): ex: tinhtong(10,20)
Ta có thể dùng hàm tính toán rồi trả về giá trị bằng phát biểu return, cách gọi hàm là dùng 1 biến để hứng giá trị trả về $val = function_name();
Hãy gán giá trị mặc định cho hàm với mục đích sử dụng rộng hơn, và tái sử dụng hàm cho những trường hợp khác nhau. Như bạn có thể dùng hàm A khi không cần đối số, và ở nơi khác bạn lại muốn dùng hàm A khi có truyền đối số, thì việc gán giá trị mặc định sẽ giúp bạn tiết kiệm được định nghĩa thêm hàm khác mà cấu trúc của hàm không thay đổi nhiều.
Hẹn gặp lại bài kế tiếp bái bai.