Chuong XXV : Hàm (Functions) trong PHP

Hàm (Functions) trong PHP

 

Không thể không nói đến hàm trong việc lập trình, nhờ có nó mà chương trình của chúng ta trở nên dễ dàng tổ chức hơn. Như các ngôn ngữ khác, PHP có khả năng cung cấp những hàm do người dùng tự định nghĩa. Đồng thời, PHP cũng có một số cải tiến để việc viết hàm được dễ chịu và mạnh mẽ hơn.

Định nghĩa và gọi hàm

Rất dễ để định nghĩa một hàm trong PHP:

PHP Code:

<?php

function tên_hàm([các tham số truyền vào …])
{
[thân hàm …]
}

?>

– Từ khoá function báo cho PHP biết rằng đây là một hàm. Tiếp theo đó là tên hàm. Tên hàm của PHP có thể là bất cứ ký tự Unicode gì (kể cả tiếng Việt, tiếng Trung…, nhưng không được phép bắt đầu bằng số). Thật sự mạnh mẽ, nhưng bạn sẽ gặp vấn đề khi lưu file đó. Thôi thì cứ đặt tên không dấu là ổn nhất . Ví dụ:

PHP Code:

<?php
function this_is_một_hàm()
{
echo “Hoàn toàn hợp lệ !!!”;
}
?>

– Sau tên hàm là danh sách tham số truyền vào và phần thân hàm. Phần thân hàm phải bắt đầu và kết thúc bằng cặp dấu { }. Phần thân này được thực thi khi tên hàm đựơc gọi.

Chú ý: mỗi tên hàm chỉ được định nghĩa một lần. Với một số ngôn ngữ khác, hàm có thể được gọi đè khi danh sách tham số truyền vào là khác nhau (Java chẳng hạn), nhưng PHP thì không có việc đó.

Gọi hàm cũng khá dễ. Bạn chỉ việc gọi tên hàm cùng danh sách tham số đi kèm. Hay hơn, việc gọi hàm KHÔNG PHÂN BIỆT CHỮ HOA-CHỮ THƯỜNG. Tuy nhiên, khuyến cáo là nên gọi hàm theo đúng tên hàm đã đặt, như thế dễ quản lý hơn.

PHP Code:

<?php

generate_left_menu_bar();
GeNeRaTe_LeFt_MEnu_BaR();  // cũng được, nhưng không nên dùng !!!
process_user_information($current_user, “new user”, 65.0);
generate_copyright_notices();
generate_left_menu_bar;    // Sai !! Vì không có dấu ()!!

?>
Chú ý ví dụ trên, khi gọi tên hàm, luôn phải có cặp dấu ( ) nếu hàm không nhận tham số nào (còn nếu nhận tham số thì tất nhiên cặp dấu đó để chứa tham số rồi, phải không ).

Ngừng việc thực thi hàm
– Vào bất cứ thời điểm nào trong quá trình thực thi hàm, bạn cũng đều có thể dừng công việc của hàm bằng từ khoá return.

PHP Code:

<?php

function work_work_work()
{
$dow = date(‘l’);

if ($dow == ‘Saturday’ or $dow == ‘Sunday’)
{
// nghỉ việc vào cuối tuần
return;
}

// work hard
work_harder();
}

?>

– Khi mà hàm work_work_work được gọi vào thứ 7 hoặc Chủ nhật, nó trả về “không gì cả”, còn nếu không, nó trả về giá trị “làm việc chăm chỉ hơn đi !!” (Ví dụ chỉ mang tính minh họa ).

Đưa tham số vào hàm

– Ví dụ cho một cấu trúc cơ bản:

PHP Code:

<?php

function my_new_function($param1, $param2, $param3, $param4)
{
echo <<<DONE
You passed in: <br/>
\$param1:  $param1 <br/>
\$param2:  $param2 <br/>
\$param3:  $param3 <br/>
\$param4:  $param4 <br/>

DONE;
}

?>

– Khi đưa một số tham số vào hàm, bạn phải phân cách chúng bằng dấu phẩy (,). Bạn có thể truyền bất kỳ tham số nào vào hàm, bất kể là biến, hằng số.. hoặc thậm chí là một hàm khác:

PHP Code:

<?php

// gọi hàm với nhiều loại tham số truyền vào
my_new_function($userName, 6.22e23, pi(), $a or $b);

?>
Giá trị trả về của hàm

– Thông thường, người ta lập trình hàm chỉ để xử lý một công việc nhất định mang tính lặp lại, và giá trị trả về của hàm là không có (null). Nhưng không hẵng tất cả mọi trường hợp đều như vậy:

PHP Code:

<?php

function is_even_number($number)
{
if (($number % 2) == 0)
return TRUE;
else
return FALSE;
}

?>

-> Hàm trên có giá trị trả về là một giá trị boolean True hoặc False.

Lời kết:
Hàm là một công cụ rất mạnh trong PHP. Việc sử dụng hàm không chỉ để tối ưu các đoạn code, nó còn làm cho chương trình dễ đọc hơn và thích hợp để làm trong một nhóm với nhau.

Chúc bạn thành công,
iSheep (UDS)

 

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: