By GokiSoft.Com| 21:02 08/06/2020|
Tài Liệu PHP

PHP Functions - Hàm

Sức mạnh của PHP đến từ các hàm của nó.

PHP có hơn 1000 hàm dựng sẵn và bạn có thể tạo các hàm tùy chỉnh cho riêng mình.


Các hàm dựng sẵn của 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 một tập lệnh, để thực hiện một tác vụ cụ thể.


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

Bên cạnh các hàm PHP có sẵn, bạn có thể tạo các hàm cho 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 chức năng sẽ không thực thi tự động khi tải trang.
  • Hàm sẽ thực thi khi được gọi.

Tạo một hàm do người dùng xác định trong PHP

Để khai báo hàm ta dùng function sau đó là tên_hàm():

Cú pháp

function functionName() {
  code được thực thi;
}

Note: 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.

Tip: Tên hàm phải là một động từ phản ánh chức năng của hàm!

Trong ví dụ dưới đây, chúng ta tạo một hàm có tên "writeMsg()". Hàm có chức nâng xuất ra dòng chữ "Hello world!". Để gọi hàm, chỉ cần viết tên của nó kèm ngoặc đơn ():

Ví dụ

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

writeMsg(); // gọi function
?>


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

Thông tin có thể được truyền đến các 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 đặt bên trong dấu ngoặc đơn. Bạn có thể thêm bao nhiêu đối số tùy ý, chỉ cầ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ố ($fname). Khi hàm familyName() được gọi, chúng ta đặt vào hàm một đối số là tên người (vd. Jani), và tên đó được sử dụng bên trong hàm, tạo ra một số tên khác nhau, nhưng họ là như nhau:

Ví dụ

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

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

Ví dụ sau có một hàm với hai đối số ($fname và $year):

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

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


PHP được coi là Loosely Typed Language (Hiểu nôm na là không cần khai báo kiểu biến trong PHP)

Trong ví dụ trên, chúng ta không phải nói với PHP kiểu dữ liệu cho biến.

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 định 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, khai báo kiểu dữ liệu đã được thêm vào. Điều này cho chúng ta một tùy chọn để chỉ định kiểu dữ liệu khi khai báo hàm.

Trong ví dụ sau, chúng ta gửi cả số và chuỗi vào hàm mà không sử dụng strict .Sử dụng strict để báo lỗi khi không đúng kiểu dữ liệu:

<?php
function addNumbers(int $a, int $b) {
  return $a + $b;
}
echo addNumbers(5, "5 days");
// strict KHÔNG được kích hoạt nên "5 days" được đổi thành 5, và kết quả là hàm trả về 10
?>


Để dùng strict ta phải viết declare(strict_types=1); trên dòng đầu tiên của tệp PHP.

Trong ví dụ sau, chúng ta gửi cả số và chuỗi vào hàm, nhưng ở đây có sử dụng strict:

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

function addNumbers(int $a, int $b) {
  return $a + $b;
}
echo addNumbers(5, "5 days");
// strict được kích hoạt và "5 days" không phải số, vì vậy sẽ xuất hiện cảnh báo lỗi
?>

strict buộc chúng ta phải sử dụng đúng kiểu dữ liệu đã khai báo.


Đối số với giá trị mặc định

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

Ví dụ

<?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);
?>


Hàm có trả về

Để hàm trả về giá trị, sử dụng return:

Ví dụ

<?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);
?>


Khai báo kiểu trả về

PHP 7 cũng hỗ trợ Khai báo kiểu cho return. Giống như khai báo kiểu cho các đối số hàm, bằng cách kích hoạt strict, nó sẽ xuất hiện lỗi "Fatal Error" nếu giá trị không khớp kiểu.

Để khai báo một kiểu cho hàm có trả về, thêm một dấu hai chấm ( : ) và kiểu dữ liệu bạn muốn trả về ngay trước dấu ngoặc nhọn ( { ) khi khai báo 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);
?>

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 là trả về kiểu chính xác:

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