PHP 7
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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

PHP7 đã 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.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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 PHP7 đã nhé.

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

Trong PHP7 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ó.

Bài viết này được đăng tại [free tuts .net]

// $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ờ PHP7 đã 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 PHP7.

Ví dụ:

function showInfomation(string $author, int $year){
   echo 'Tên tác giả là: ' . $author . '<br/>';
   echo 'Tác giả sinh năm: ' . $year . '<br/>';
}

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 . '<br/>';
   echo 'Tác giả sinh năm: ' . $year . '<br/>';
}

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

2. 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 PHP7 như thế nào thì chúng ta cùng tìm hiểu nhé.

Trong PHP7 để 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.

Ví dụ:

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.

3. Lời kết

Cá nhân mình thấy đây là sự thay đổi rất hay và rất thực tế, phù hợp với nhu cầu ràng buộc của các công cụ lập trình. Bài này mình xin dừng tại đây, hẹn gặp lại các bạn ở bài tiếp theo.

Danh sách file tải về

Tên file tải về Pass giải nén
Tải bài học định dạng PDF freetuts.net hoặc gameportable.net

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top