Hàm trong PHP

Hàm trong PHP

Sức mạnh thực sự của PHP đến từ các hàm của nó. PHP có hơn 1000 hàm tích hợp sẵn và ngoài ra, bạn có thể tạo các hàm tùy chỉnh của riêng mình.

Các hàm tích hợp sẵn của PHP

PHP có hơn 1000 hàm tích hợp sẵn có thể được gọi trực tiếp, từ bên trong một tập lệnh, để thực hiện một tác vụ cụ thể.

Vui lòng kiểm tra tài liệu tham khảo PHP của chúng tôi để biết tổng quan đầy đủ về các hàm tích hợp sẵn của PHP.

Hàm do người dùng định nghĩa PHP

Bên cạnh các hàm PHP tích hợp, bạn có thể tạo các hàm của riêng bạn.

  • Hàm là một khối các câu lệnh có thể được sử dụng nhiều lần trong một chương trình.
  • Một hàm sẽ không được thực thi tự động khi tải trang.
  • Một hàm  sẽ được thực thi bằng một cuộc gọi đến hàm.

Tạo một hàm do người dùng tự định nghĩa trong PHP

Một khai báo hàm do người dùng tự định nghĩa bắt đầu bằng từ khóa function:

Cú pháp

function functionName() {
    code to be executed;
}

Lưu ý: Tên hàm phải bắt đầu bằng chữ cái hoặc dấu gạch dưới. Tên hàm KHÔNG phân biệt chữ hoa chữ thường.

Mẹo: Nên đặt tên cho hàm phản ánh chức năng của hàm!

Trong ví dụ dưới đây, chúng tôi tạo ra một hàm có tên writeMsg. Dấu ngoặc nhọn mở ({) đại diện cho phần đầu của mã chức năng và dấu ngoặc nhọn đóng (}) đại diện cho phần cuối của hàm.

Hàm sẽ in dòng chữ “Hello world!”. Để gọi hàm, chỉ cần viết tên của nó kèm theo cặp dấu ngoặc đơn () như sau:

<?php
    function writeMsg() {
        echo "Hello world!";
    }

    writeMsg(); // call the function
?>

Đây là kết quả:

Hello world!

Các đối số của hàm trong PHP

Thông tin có thể được truyền vào hàm thông qua các đối số. Một đối số giống như một biến.

Các đối số được chỉ định sau tên hàm, bên trong cặp dấu ngoặc đơn. Bạn có thể thêm bao nhiêu đối số tùy ý, chỉ cần phân tách chúng bằng dấu phẩy.

Ví dụ sau có một hàm với một đối số là $fname. Khi hàm familyName được gọi, chúng ta cần truyền một tên làm đối số của hàm (ví dụ Jani) và tên được sử dụng bên trong hàm như sau:

<?php
    function familyName($fname) {
        echo "$fname Refsnes.<br>";
    }

    familyName("Jani");
    familyName("Hege");
    familyName("Stale");
    familyName("Kai Jim");
    familyName("Borge");
?>

Đây là kết quả:

Jani Refsnes.
Hege Refsnes.
Stale Refsnes.
Kai Jim Refsnes.
Borge Refsnes.

Ví dụ sau tạo một hàm với hai đối số đầu vào là $fname$year:

<?php
    function familyName($fname, $year) {
        echo "$fname Refsnes. Born in $year <br>";
    }

    familyName("Hege", "1975");
    familyName("Stale", "1978");
    familyName("Kai Jim", "1983");
?>

Đây là kết quả:

Hege Refsnes. Born in 1975
Stale Refsnes. Born in 1978
Kai Jim Refsnes. Born in 1983

PHP là một ngôn ngữ định kiểu lỏng lẻo

Trong ví dụ trên, lưu ý rằng chúng ta không phải nói với PHP biến có kiểu dữ liệu nào.

PHP tự động liên kết một kiểu dữ liệu với biến, tùy thuộc vào giá trị của nó. Vì các kiểu dữ liệu không được đặt theo nghĩa chặt chẽ, bạn có thể thực hiện những việc như thêm chuỗi vào số nguyên mà không gây ra lỗi.

Trong PHP 7 đã thêm khai báo kiểu dữ liệu. Điều này cho chúng ta một tùy chọn để chỉ định kiểu dữ liệu dự kiến ​​khi khai báo hàm và bằng cách thêm khai báo strict, nó sẽ đưa ra “Fatal Error” nếu kiểu dữ liệu không khớp.

Trong ví dụ sau, chúng tôi cố gắng gửi cả số và chuỗi cho hàm mà không sử dụng strict:

<?php
    function addNumbers(int $a, int $b) {
        return $a + $b;
    }
    echo addNumbers(5, "5 days");
    // since strict is NOT enabled "5 days" is changed to int(5), and it will return 10
?>

Đây là kết quả:

10

Để chỉ định strict chúng ta cần thiết lập declare(strict_types=1); nằm trên dòng đầu tiên của file PHP.

Trong ví dụ sau, chúng tôi cố gắng gửi cả một số và một chuỗi cho hàm, nhưng ở đây chúng tôi đã thêm khai báo strict:

<?php declare(strict_types=1); // strict requirement

    function addNumbers(int $a, int $b) {
        return $a + $b;
    }
    echo addNumbers(5, "5 days");
    // since strict is enabled and "5 days" is not an integer, an error will be thrown
?>

Đây là kết quả:

Fatal error: Uncaught TypeError: Argument 2 passed to addNumbers() must be of the type integer, string given, called in ...

Khai báo strict yêu cầu mọi tham số cần được truyền vào hàm phải theo khai báo.

Giá trị đối số mặc định của PHP

Ví dụ sau đây cho thấy cách sử dụng một tham số mặc định. Nếu chúng ta gọi hàm setHeight mà không có đối số, nó sẽ lấy giá trị mặc định làm đối số:

<?php declare(strict_types=1); // strict requirement
    function setHeight(int $minheight = 50) {
        echo "The height is : $minheight <br>";
    }

    setHeight(350);
    setHeight(); // will use the default value of 50
    setHeight(135);
    setHeight(80);
?>

Đây là kết quả:

The height is : 350
The height is : 50
The height is : 135
The height is : 80

Hàm trả về giá trị trong PHP

Để cho hàm trả về một giá trị, hãy sử dụng câu lệnh return:

<?php declare(strict_types=1); // strict requirement
    function sum(int $x, int $y) {
        $z = $x + $y;
        return $z;
    }

    echo "5 + 10 = " . sum(5, 10) . "<br>";
    echo "7 + 13 = " . sum(7, 13) . "<br>";
    echo "2 + 4 = " . sum(2, 4);
?>

Đây là kết quả:

5 + 10 = 15
7 + 13 = 20
2 + 4 = 6

Khai báo kiểu trả về của hàm trong PHP

PHP 7 cũng hỗ trợ khai báo kiểu trả về cho hàm. Giống như khai báo kiểu cho các đối số của hàm, bằng cách khai báo strict, nó sẽ đưa ra lỗi “Fatal error” nếu trả về kiểu không phù hợp.

Để khai báo một kiểu trả về cho hàm, hãy thêm dấu hai chấm (:) và tên kiểu dữ liệu ngay sau tên hàm.

Trong ví dụ sau, chúng tôi chỉ định kiểu trả về cho hàm:

<?php declare(strict_types=1); // strict requirement
    function addNumbers(float $a, float $b) : float {
        return $a + $b;
    }
    echo addNumbers(1.2, 5.2);
?>

Đây là kết quả:

6.4

Bạn có thể chỉ định kiểu trả về khác với kiểu của đối số, nhưng đảm bảo trả về là đúng kiểu dữ liệu như khai báo:

<?php declare(strict_types=1); // strict requirement
    function addNumbers(float $a, float $b) : int {
        return (int)($a + $b);
    }
    echo addNumbers(1.2, 5.2);
?>

Đây là kết quả:

6

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *