Liên hệ
Ủng hộ, đăng ký theo dõi kênh

Hàm trong lập trình PHP

Định nghĩa hàm, khai báo và sử dụng hàm tự xây dựng trong PHP với các tham số giá trị và tham chiếu

Khái niệm hàm trong PHP

Hàm (function) là một khối chứa các câu lệnh, mục đích là sử dụng khối này nhiều lần trong chương trình. Hàm không thi hành ngay khi trang web của bạn load. Mà bạn muốn thi hành hàm ở chỗ nào thì phải gọi hàm ở chỗ đó. Hàm do bạn tự định nghĩa có dạng như sau:

function functionName() {
//code to be executed
}

functionName là tên hàm, tên bắt đầu bằng một ký tự hoặc gạch dưới _, nhưng không được bắt đầu bằng số hay ký tự đặc biệt. Tên hàm không phân biệt chữ in hoa - in thường.

Ví dụ sau tạo một hàm helloWorld(). Kỹ hiệu { cho biết nó là điểm bắt đầu của hàm, ngược lại ký hiệu } cho biết điểm kết thúc hàm.

Để gọi hàm, thật đơn giản viết ra tên hàm: helloWorld

.
    
    function helloWorld() {
        echo "Hello World!";
    }
    
    sayHello(); //gọi hàm
    
    //Outputs "Hello World!"

Tham số của hàm

Các thông tin chuyển tới cho hàm thông qua đối số của hàm, chúng có vai trò như là biến. Các đối số được chỉ ra sau tên hàm và nằm trong (), ví dụ hàm sau tính phép nhân của hai số truyền vào hàm.

    
function multiplyTwonumber($number1, $number2) {
$answer = $number1 * $number2;
echo $answer;
}
multiplyTwonumber(2,5);
//kết quả 10

Như ví dụ trên $number1, $number2 là tham số của hàm, bạn muốn có bao nhiêu tham số cũng được - chúng cách nhau bởi dấu ,.

    
function multiplyTwonumber($number1, $number2) {
$answer = $number1 * $number2;
echo $answer;
}
multiplyTwonumber(2,5);
//kết quả 10

Khi định nghĩa một hàm, các biến biểu diễn giá trị sẽ chuyển cho hàm xử lý được gọi là tham số parameter. Khi sử dụng hàm, các giá trị bạn chuyển đến cho hàm gọi là đối số argument.

Đối số mặc định

Các đối số mặc định có thể xác định giá trị cho đối số của hàm. Hàm sau đây, khi gọi không truyền tham số vào hàm, do vậy, khi hàm thi hành nó sẽ lấy giá trị mặc định làm giá trị đối số.

    
<?
function setNam($name='noname') {
    echo "Name is ".$name;
}
setNam('PHP');  //Name is PHP
setNam();       //Name is noname

?>

Khi bạn sử dụng hàm có tham số mặc định như vậy, bạn nên sắp xếp các tham số mặc định ở phía bên phải.

Giá trị trả về của hàm

Một hàm có thể trả về một giá trị bằng câu lệnh return $value; với $value là giá trị trả về. Trong hàm nếu gặp return hàm sẽ dừng thi hành và gửi giá trị trả về cho nơi gọi hàm.

    
<?
function phepnhan($num1, $num2) {
    $r = $num1 * $num2;
    return $r;
}

echo phepnhan(3,4);
//Kết quả in ra: 12
?>

Một hàm không có câu lệnh return thì giá trị trả về là NULL, hàm không thể trả về nhiều giá trị, nhưng nếu muốn bạn có thể trả về một mảng.

Tham số tham chiếu

Xem ví dụ sau: Hàm addFive() đơn giản là cộng thêm năm vào giá trị đối số và trả về kết quả.

<?
function addFive($number) {
    $number += 5;
    return $number;
}

$a = 10;
echo addFive($a);
echo $a;

//Kết quả in ra là :
//15
//10 (giá trị $a)

?>

Với cách sử dụng như vậy, giá trị của $a được truyền cho hàm bằng cách tạo ra một biến $a sử dụng cục bộ trong hàm, biến này ban đầu được gán giá trị từ $a của nơi gọi. Sau khi hàm kết thúc, $a ngoài hàm không hề thay đổi giá trị. Cách sử dụng này là truyền giá trị.

Có nhiều trường hợp, bạn muốn hàm số sẽ sử dụng đúng địa chỉ biến truyền đến chứ không phải tạo ra một biến cục bộ mới thì lúc này gọi là THAM CHIẾU, để chuyển thành tham chiếu biến chỉ cần thêm ký tự & vào trước tên biến khi khai báo hàm.

<?
function addFive(&$number) { //Tham chiếu
    $number += 5;
    return $number;
}

$a = 10;
echo addFive($a);
echo $a;

//Kết quả in ra là :
//15
//15 (giá trị $a bị thay đổi do là tham chiếu của hàm)

?>

Gọi hàm động

Động ở đây nghĩa có thể lưu tên hàm như một chuỗi và gọi hàm thông qua chuỗi này. Ví dụ hàm addFivephepnhan ở trên.

<?
 //Cách gọi thông thường:
 $a = 5;
 echo phepnhan(5,6);
 echo addFive($a);
 
 //Gọi thông qua một biến lưu tên hàm.
 
 $func1 = 'phepnhan';
 $func2 = 'addFive';
 
 
  echo $func1(5,6); // ..........tương đương gọi phepnhan(5,6)
  echo $func2($a);  
 

?>

Vui lòng đăng ký ủng hộ kênh