Hàm PHP
Sức mạnh thực sự của PHP đến từ các chức năng của nó.
PHP có hơn 1000 hàm dựng 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 dựng sẵn trong PHP
PHP có hơn 1000 hàm dựng sẵn có thể được gọi trực tiếp từ bên trong tập lệnh để thực hiện một tác vụ cụ thể.
Vui lòng xem tài liệu tham khảo PHP của chúng tôi để có cái nhìn tổng quan đầy đủ về các hàm dựng sẵn PHP .
Các hàm do người dùng xác định 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 mình.
- Hàm là một khối câu lệnh có thể được sử dụng nhiều lần trong chương trình.
- Một chức năng sẽ không tự động thực thi khi tải trang.
- Một hàm sẽ được thực thi bằng một lệnh gọi hàm.
Tạo một hàm
Khai báo hàm do người dùng định nghĩa bắt đầu bằng từ khóa function
, theo sau là tên của hàm:
Ví dụ
function myMessage() {
echo "Hello world!";
}
Lưu ý: Tên hàm phải bắt đầu bằng một 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: Đặt cho hàm một cái tên phản ánh chức năng của hàm!
Gọi một hàm
Để gọi hàm, chỉ cần viết tên của nó theo sau là dấu ngoặc đơn ()
:
Trong ví dụ của chúng tôi, chúng tôi tạo một hàm có tên myMessage()
.
Dấu ngoặc nhọn mở {
cho biết phần đầu của mã hàm và dấu ngoặc nhọn đóng }
cho biết phần cuối của hàm.
Hàm xuất ra "Xin chào thế giới!".
Đối số hàm PHP
Thông tin có thể được chuyển đến các hàm thông qua các đối số. Một đối số cũng giống như một biến.
Các đối số được chỉ định sau tên hàm, bên trong dấu ngoặc đơn. Bạn có thể thêm bao nhiêu đối số tùy thích, chỉ cần phân tách chúng bằng dấu phẩy.
Ví dụ sau có hàm với một đối số ($fname)
. Khi hàm familyName()
được gọi, chúng ta cũng chuyển một tên, ví dụ: ("Jani")
và tên này được sử dụng bên trong hàm, tạo ra một số tên khác nhau nhưng có họ bằng nhau:
Ví dụ
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
Hãy tự mình thử » Ví dụ sau có một hàm có hai đối số ($fname, $year)
:
Ví dụ
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
Hãy tự mình thử »Giá trị đối số mặc định của PHP
Ví dụ sau đây cho thấy cách sử dụng tham số mặc định. Nếu chúng ta gọi hàm setHeight()
mà không có đối số thì nó sẽ lấy giá trị mặc định làm đối số:
Ví dụ
function setHeight($minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
Hãy tự mình thử »Hàm PHP - Trả về giá trị
Để cho phép hàm trả về một giá trị, hãy sử dụng câu lệnh return
:
Ví dụ
function sum($x, $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);
Hãy tự mình thử »Truyền đối số bằng cách tham chiếu
Trong PHP, các đối số thường được truyền theo giá trị, có nghĩa là một bản sao của giá trị được sử dụng trong hàm và biến được truyền vào hàm không thể thay đổi.
Khi một đối số hàm được truyền bằng tham chiếu, các thay đổi đối với đối số đó cũng sẽ thay đổi biến được truyền vào. Để biến đối số hàm thành tham chiếu, toán tử &
được sử dụng:
Ví dụ
Sử dụng đối số truyền theo tham chiếu để cập nhật một biến:
function add_five(&$value) {
$value += 5;
}
$num = 2;
add_five($num);
echo $num;
Hãy tự mình thử »Số lượng đối số có thể thay đổi
Bằng cách sử dụng toán tử ...
phía trước tham số hàm, hàm sẽ chấp nhận số lượng đối số không xác định. Đây còn được gọi là hàm biến thiên.
Đối số của hàm variadic trở thành một mảng.
Ví dụ
Một hàm không biết nó sẽ nhận được bao nhiêu đối số:
function sumMyNumbers(...$x) {
$n = 0;
$len = count($x);
for($i = 0; $i < $len; $i++) {
$n += $x[$i];
}
return $n;
}
$a = sumMyNumbers(5, 2, 6, 2, 7, 7);
echo $a;
Hãy tự mình thử »Bạn chỉ có thể có một đối số có độ dài thay đổi và nó phải là đối số cuối cùng.
Ví dụ
Đối số biến đổi phải là đối số cuối cùng:
function myFamily($lastname, ...$firstname) {
txt = "";
$len = count($firstname);
for($i = 0; $i < $len; $i++) {
$txt = $txt."Hi, $firstname[$i] $lastname.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
Hãy tự mình thử »Nếu đối số biến đổi không phải là đối số cuối cùng, bạn sẽ gặp lỗi.
Ví dụ
Việc có toán tử ...
ở đối số đầu tiên trong số hai đối số sẽ gây ra lỗi:
function myFamily(...$firstname, $lastname) {
$txt = "";
$len = count($firstname);
for($i = 0; $i < $len; $i++) {
$txt = $txt."Hi, $firstname[$i] $lastname.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
Hãy tự mình thử »PHP là một ngôn ngữ được gõ lỏng lẻo
Trong các ví dụ trên, lưu ý rằng chúng ta không cần phải cho PHP biết biến đó là kiểu dữ liệu nào.
PHP tự động liên kế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ẽ nên 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, việc khai báo kiểu đã được thêm vào. Điều này cung cấp cho chúng ta một tùy chọn để chỉ định kiểu dữ liệu dự kiến khi khai báo một hàm và bằng cách thêm khai báo strict
, nó sẽ đưa ra "Lỗi nghiêm trọng" 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 tới hàm mà không sử dụng strict
:
Ví dụ
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
Hãy tự mình thử » Để chỉ định strict
chúng ta cần đặt declare(strict_types=1);
. Đây phải là dòng đầu tiên của tệp PHP.
Trong ví dụ sau, chúng tôi cố gắng gửi cả số và chuỗi đến hàm, nhưng ở đây chúng tôi đã thêm khai báo strict
:
Ví dụ
<?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
?>
Hãy tự mình thử » Tuyên bố strict
buộc mọi thứ phải được sử dụng theo cách đã định.
Khai báo kiểu trả về PHP
PHP 7 cũng hỗ trợ Khai báo kiểu cho câu lệnh return
. Giống như việc khai báo kiểu cho các đối số hàm, bằng cách kích hoạt yêu cầu nghiêm ngặt, nó sẽ đưa ra "Lỗi nghiêm trọng" đối với kiểu không khớp.
Để khai báo một kiểu cho hàm trả về, hãy thêm dấu hai chấm ( :
) và kiểu ngay trước dấu ngoặc nhọn mở ( {
) khi khai báo hàm.
Trong ví dụ sau, chúng tôi chỉ định kiểu trả về cho hàm:
Ví dụ
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>
Hãy tự mình thử »Bạn có thể chỉ định một kiểu trả về khác với các kiểu đối số, nhưng hãy đảm bảo rằng kiểu trả về là đúng:
Ví dụ
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : int {
return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
Hãy tự mình thử »