Hướng dẫn pointers in php

Hàm (function) là một đoạn chương trình được đặt tên, có đầu vào và đầu ra. Hàm có chức năng giải quyết một số vấn đề chuyên biệt cho chương trình. Hàm có thể được gọi nhiều lần (tái sử dụng) với các tham số khác nhau. Có 2 loại function trong PHP là:

Nội dung chính

  • 1. Định nghĩa một user-defined function trong PHP
  • 2. Các tham số (parameters) của hàm trong PHP
  • 2.1. Kiểu dữ liệu của tham số trong function
  • 2.2. Giá trị mặc định của tham số trong function
  • 3. Giá trị trả về của hàm (return value) trong PHP
  • 4. Truyền tham chiếu cho hàm trong PHP

Nội dung chính

  • 1. Định nghĩa một user-defined function trong PHP
  • 2. Các tham số (parameters) của hàm trong PHP
  • 2.1. Kiểu dữ liệu của tham số trong function
  • 2.2. Giá trị mặc định của tham số trong function
  • 3. Giá trị trả về của hàm (return value) trong PHP
  • 4. Truyền tham chiếu cho hàm trong PHP
    • Các hàm được xây dựng sẵn (built-in function): PHP có hơn 1000 built-in function. Đây là ưu điểm lớn của PHP, giúp việc lập trình dễ dàng hơn.
    • Các hàm do lập trình viên xây dựng (user-defined function)

Trong bài này, chúng ta sẽ tìm hiểu cách xây dựng và sử dụng các hàm user-defined trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

1. Định nghĩa một user-defined function trong PHP

Để định nghĩa một hàm trong PHP, chúng ta sử dụng từ khóa function:

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

Ví dụ:


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.

2. Các tham số (parameters) của hàm trong PHP

Một hàm trong PHP có thể có các tham số dùng để truyền giá trị vào hàm khi gọi hàm. Một hàm có thể có nhiều tham số, mỗi tham số cách nhau bởi dấu phẩy ,. Ví dụ:

";
}
// call function
welcome("Welcome to ", "gochocit.com");
welcome("Hi all, this website is ", "google.com");
?>

2.1. Kiểu dữ liệu của tham số trong function

Các tham số trong PHP có thể không cần phải chỉ định kiểu dữ liệu. Khi gọi hàm và truyền giá trị cho hàm, PHP sẽ tự động xác định kiểu dữ liệu cho các đối số dựa vào giá trị của nó. Ví dụ:


Kết quả
Warning: A non-numeric value encountered in C:\xampp\htdocs\gochocit\index.php on line 3
20

Trong ví dụ trên, chúng ta có thể truyền cho hàm addNumbers() một giá trị chuỗi (string) để cộng với một số nguyên. Hàm addNumbers() vẫn thực thi được và chỉ xuất ra một Warning.

Từ PHP 7, chúng ta có thể chỉ định kiểu dữ liệu của các tham số trong hàm với từ khóa strict. Nếu không truyền vào kiểu dữ liệu phù hợp khi gọi hàm thì sẽ gây ra lỗi.


Kết quả
Fatal error: Uncaught TypeError: addNumbers(): Argument #2 ($b) must be of type int, string given, called in C:\xampp\htdocs\gochocit\index.php on line 7 and defined in C:\xampp\htdocs\gochocit\index.php:4 Stack trace: #0 C:\xampp\htdocs\gochocit\index.php(7): addNumbers(5, '15 days') #1 {main} thrown in C:\xampp\htdocs\gochocit\index.php on line 4

Khai báo kiểu dữ liệu cho tham số và sử dụng strict để bắt buộc truyền dữ liệu phù hợp khi gọi hàm. Trong ví dụ trên, chúng ta truyền một chuỗi (string) vào cho hàm addNumbers() thì sẽ gây ra lỗi.

2.2. Giá trị mặc định của tham số trong function

Những tham số của function có thể được gán giá trị mặc định. Khi gọi hàm mà không truyền đối số thì function sẽ nhận giá trị mặc định làm đối số.

";
}
showNumberPost(125);
//using default value of 100
showNumberPost();
showNumberPost(99);
?>
Kết quả
Number of posts: 125
Number of posts: 100
Number of posts: 99

Nếu function có nhiều tham số thì các tham số có giá trị mặc định bắt buộc nằm bên phải của những tham số không có giá trị mặc định. Ví dụ, định nghĩa hàm như bên dưới sẽ hợp lệ.


Còn ví dụ dưới đây là một cách định nghĩa hàm sẽ gây ra lỗi khi gọi hàm.


3. Giá trị trả về của hàm (return value) trong PHP

PHP cũng cho phép một hàm có kiểu dữ liệu trả về. Kiểu dữ liệu trả về của một hàm được chỉ định sau dấu hai chấm : được đặt sau khai báo tham số.

";
// int is return datatype
function addIntegerNumbers(int $a, int $b) : int {
    return $a + $b;
}
// output 6
echo addIntegerNumbers(1, 5);
?>

4. Truyền tham chiếu cho hàm trong PHP

Khi truyền các đối số cho hàm trong PHP thì đó thường là truyền tham trị (passed by value). Có nghĩa là biến được truyền vào hàm không thể thay đổi được. Nhưng PHP cũng hỗ trợ truyền tham chiếu (passed by reference) khi gọi hàm. Lúc này, các biến được truyền vào hàm có thể bị thay đổi sau khi ra khỏi hàm. Để truyền tham chiếu trong PHP, chúng ta sử dụng toán tử &.

";
add_one($x);
echo 'When passed by value, $x = '.$x."
"; add_two($x); echo 'When passed by reference, $x = '.$x; ?>
Kết quả
Value of $x = 1
When passed by value, $x = 1
When passed by reference, $x = 3

Rõ ràng, khi truyền tham trị thì $x không đổi nhưng truyền tham chiếu thì $x thay đổi.

  • Các thao tác trên cấu trúc dữ liệu List trong Python
  • Đếm độ dài của chuỗi (string) với hàm strlen() trong PHP
  • Khai báo đối tượng (object) trong lập trình hướng đối tượng (OOP)
  • Khái niệm biến (variable) và cách khai báo biến trong Java
  • Khái niệm đa hình (polymorphism) trong lập trình hướng đối tượng