Trang chủ     |     Kinh nghiệm     |     Lập trình

Bài 04: Tính năng mới khi xây dựng hàm trong PHP 7

Ngày xuất bản 07/12/2016 16:06:06
CÔNG TY TNHH XJK
Bài 04: Tính năng mới khi xây dựng hàm trong PHP 7
5 | 2 đánh giá
Bài 04: Tính năng mới khi xây dựng hàm trong PHP 7 Bài 04: Tính năng mới khi xây dựng hàm trong PHP 7
Được xuất bản bởi Đăng bởi: XJK

PHP 7 đã cung cấp thêm một số tính năng mới cho việc xây dựng hàm rất giống với ngôn ngữ C, C++ hay C# đó là ta có thể ràng buộc kiểu dữ liệu của các tham số trong hàm, xác định kiểu giá trị trả về của hàm.

Trước khi vào bài học thì mình đưa ra danh sách các kiểu dữ liệu thông dụng trong PHP 7 đã nhé.

1. Danh sách các kiểu dữ liệu trong PHP 7

Trong PHP 7 chúng ta có một số kiểu dữ liệu như sau:

•        int

•        float

•        bool

•        string

•        interfaces

•        array

•        callable

•        Object (tự định nghĩa)

2. Xác định kiêu dữ liệu của tham số

Nếu bạn đã từng học qua các ngôn ngữ khác như Pascal, C, C++, C# thì bạn sẽ thấy khi chúng ta khai báo biến thì bắt buộc phải xác định luôn kiểu dữ liệu cho biến, điều này trong PHP là không cần thiết bơi cú pháp của nó chỉ cần khai báo tên biến kiểu dữ liệu của biến sẽ phụ thuộc vào giá trị mà ta gán cho nó.

kiểu dữ liệu php7

Ảnh: Kiểu dữ liệu php7

// $a là kiểu INT

$a = 12;

// $b là kiểu string

$b = '12';

Điều này cho thấy PHP là một ngôn ngữ hơi nhẹ dạ trong việc ràng buộc kiểu dữ liệu nên rất tiện lợi khi ta xây dựng ứng dụng web, tuy nhiên cũng có nhiều người cho rằng nó sẽ không có đầy đủ tính chất của một ngôn ngữ lập trình, dễ gây ra nhầm lẫn, nhất là khi sử dụng hàm. Tuy nhiên bây giờ PHP 7 đã bổ sung phần khai báo kiểu dữ liệu cho tham số truyền vào nên đây có thể coi là một bước nhay rất hay của PHP 7.

Ví dụ:

function showInfomation(string $author, int $year){

   echo 'Tên tác giả là: ' . $author . '
';

   echo 'Tác giả sinh năm: ' . $year . '
';

}

showInfomation('Nguyễn Văn Cường', 1990);

Chạy lên bạn sẽ thấy xuất hiện một thông báo như sau:

Tên tác giả là: Nguyễn Văn Cường

Tác giả sinh năm: 1990

Nhưng nếu bạn bật chế độ Strict Mode và nhập dữ liệu vào như ví dụ dưới đây thì sẽ bị thông báo lỗi.

declare(strict_types=1);

function showInfomation(string $author, int $year){

   echo 'Tên tác giả là: ' . $author . '
';

   echo 'Tác giả sinh năm: ' . $year . '
';

}

showInfomation('Nguyễn Văn Cường', '1990');

 

Kết quả:

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

D:\xampp\htdocs\freetuts\php7.php on line 10 and defined in D:\xampp\htdocs\freetuts\php7.php:4 Stack trace: #0

#D:\xampp\htdocs\freetuts\php7.php(10): showInfomation('Nguy\xE1\xBB\x85n V\xC4\x83n C...', '1990') #1 {main} thrown in

#D:\xampp\htdocs\freetuts\php7.php on line 4

3. Xác định kiểu dữ liệu trả về cho hàm

Khi xây dựng hàm thì chúng ta có hai loại hàm chính đó là hàm có giá trị trả về và hàm không có giá trị trả về. Hàm có giá trị trả về làm hàm có sử dụng lệnh return để trả về một giá trị nào đó, còn hàm không có giá trị trả về thì không có sử dụng lênh return nên nó sẽ trả về một giá trị NULL. Trong C, C++ nếu bạn đã khai báo một hàm là hàm có giá trị trả về thì bắt buộc bạn phải sử dụng lệnh return, vậy trong PHP 7 như thế nào thì chúng ta cùng tìm hiểu nhé.

kiểu dữ liệu php7

Ảnh: Kiểu dữ liệu php7

Trong PHP 7 để xác định kiểu giá trị trả về cho hàm thì ta sử dụng cú pháp sau:

function functionName ($variable) : return_type {

}

Trong đó return_type chính là kiểu dữ liệu trả về và nó nằm một trong các kiểu dữ liệu mà mình đã liệt kê ở phần 1.

function summary(int $a, int $b) : int {

    return $a + $b;

}

echo summary(2, 3);

Kết quả sẽ in ra con số 5. Tuy nhiên nếu bạn bật chế độ Strict Mode và truyền vào là hai chuỗi thay vì 2 số thì lập tức sẽ bị lỗi ngay.

declare(strict_types = 1);

function summary(int $a, int $b) : int {

    return $a + $b;

}

echo summary('2', '3');

Kết quả:

Fatal error: Uncaught TypeError: Argument 1 passed to summary() must be of the type integer, string given, called in D:\xampp\htdocs\freetuts\php7.php on line 10 and defined in

D:\xampp\htdocs\freetuts\php7.php:6 Stack trace: #0 D:\xampp\htdocs\freetuts\php7.php(10): summary('2', '3') #1 {main} thrown in D:\xampp\htdocs\freetuts\php7.php on line 6

Lý do nó báo lỗi là do bạn truyền vào là hai chuỗi nên phép $a + $b sẽ trả về một chuỗi chứ không phải là trả về một con số nữa.

Các bạn tiếp tục theo dõi các bài học của PHP 7

Chúc các bạn học tốt

Nguồn: http://freetuts.net/

Biên tập: Thiết kế website chuyên nghiệp XJK


Công ty TNHH XJK

CÔNG TY TNHH XJK
Trụ sở: 29A, Ðường Số 3, Phường 16, Quận Gò Vấp, Thành phố Hồ Chí Minh, Việt Nam
P.Giao dịch: 54/5 Đường Tô Ngọc Vân, Phường Thạnh Xuân, Quận 12, Tp.HCM
Điện thoại: 028.7308.2839

Fanpage Công ty TNHH XJK