Chương 5: Hàm 

Chương 5 : Hàm

Khi dùng PHP, sớm muộn gì bạn cũng cần phải tính toán, công việc này còn sẽ được lặp đi lặp lại nhiều nữa là khác ! Trong chương trước tôi chỉ cho các bạn xem những tính toán cộng trừ nhân chia cở bản mà thôi.
Ở đây tôi không hướng dẫn các bạn về toán học, mà chỉ cho các bạn xem làm sao sử dụng hàm trong PHP để thực hiện các tính toán một cách tự động và nhanh gọn thôi.


Tự tạo hàm riêng

Hàm là gì ?
Một hàm là một tập hợp các cấu trúc lệnh (dòng lệnh) và cuối cùng cho ra một giá trị. Nếu bạn phải thực hiện những tính toán khá dài dòng, phức tạp và phải thực hiện nhiều lần cùng một tính toán như vậy, thay vì mỗi lần tính bạn viết một đống dòng lệnh, bạn chỉ cần viết một lần và đặt tên cho nó là một hàm, rồi sau đó gọi lại hàm này bất cứ lúc nào bạn muốn, không cần phải viết lại một đống dòng lệnh nữa !
Tôi sẽ cho các bạn xem tại sao dùng hàm lại tiện lợi và hữu ích !

Ví dụ 1 : nói « Xin chào ! » với ai đó
Nếu diễn đàn của bạn có 1000 thành viên, chẳng lẽ để chào một người bạn lại viết một dòng ? Mệt nhỉ ! Nhưng yên tâm, hàm sẽ giúp bạn chào họ một cách tự động.
Hãy xem đoạn mã sau :
<?php
$ten= « Khoai lang » ;
echo « Xin chao $ten ! <br>”;
 
$ten= « Ong gia » ;
echo « Xin chao $ten ! <br>”;
 
$ten= « Heo moi» ;
echo « Xin chao $ten ! <br>”;
 
?>

Bạn thấy đấy, hơi dài dòng mệt mỏi nhỉ! Mình hãy viết một hàm để nói xin chào nào!
<?php
function XinChao($ten)
{
echo « Xin chao $ten ! <br>”;
}
 
XinChao(“Khoai lang”);
XinChao(“Ong gia”);
XinChao(“Heo moi”);
XinChao(“Heo map”);
XinChao(“Heo rung”);
?>

Xem nào, có gì mới ở đây nhỉ? Ở những dòng đầu tiên chỉ có một thứ mới, đó là hàm! 4 dòng đầu tiên cho phép mình tạo ra một hàm (gồm tên hàm, những gì nó có thể làm,…)
Để tạo một hàm, bạn phải gõ vào chữ function (trong tiếng anh nghĩa là hàm), kế đến đặt tên cho hàm (trong ví dụ này, hàm có tên là XinChao)
Cái hơi đặc biệt một chút nằm ở phía sau, những gì mình đặt trong dấu ngoặc đơn á! Bạn có thấy tôi đặt trong đó một biến không? Những gì mình đặt trong dấu ngoặc đơn được gọi là thông số của hàm! Tức là những thông tin mà hàm cần đến để làm việc bên trong.
Chú ý, có thể bạn thấy lạ là tại sao cuối hàng này lại không có dấu chấm phẩy nhỉ? Bình thường thôi, vì nó không phải là một dòng lệnh, mà chỉ là một cái ‘giấy chứng minh’ cho mọi người biết nó khai báo một hàm.
Tiếp theo, nội dung của hàm phải được đặt giữa hai dấu ngoặc móc ({}) để biết giới hạn của hàm, bắt đầu ở đâu, kết thúc chỗ nào!
Ở đây tôi chỉ dùng có một dòng lệnh bên trong hàm (lệnh echo) để làm một ví dụ đơn giản, nhưng rồi bạn sẽ thấy mình có thể đặt rất nhiều dòng lệnh bên trong nữa!
Vậy là một hàm đã được tạo, bạn không cần đụng đến nó nữa, sau này bạn chỉ cần gọi tên hàm kèm theo thông số của hàm là được! Ở đây hàm XinChao chỉ có một thông số chỉ tên của người mà mình muốn chào! Và đừng quên lần này phải có dấu chấm phẩy cuối cùng vì bây giờ nó là một câu lệnh rồi!
Ví dụ : XinChao(“Khoai Tay”);
Nào, bạn hãy thử xem, thử viết một trang chứa hàm này rồi nói xin chào với ai đó xem!

Ví dụ 2 : Tính thể tích hình nón!
Dzô, chạy với tốc độ nhanh hơn nào! Hãy nghĩ xem nếu tôi nhờ bạn tính giùm thể tích một hình nón, bạn sẽ tính thế nào đây?
Hì, hẳn là bạn thừa biết công thức tính rồi phải không? Mình sẽ cung cấp cho hàm bán kính đáy và chiều cao của hình nón, rồi cho nó chiên xào nấu nướng gì bên trong đó, cuối cùng phải cho mình biết thể tích của nón là bao nhiêu!
Khác với ví dụ trước, ví dụ này mình bắt hàm cho ra một giá trị!
Rồi, tôi quên công thức rồi! Không sao, có internet mà, tôi đã tìm ra công thức tính thể tích hình nón rồi nè: bán kính * bán kính * 3.14 * chiều cao* (1/3)

hinh non

Nếu bạn đã theo dõi kĩ những phần từ trước đến giờ, bạn sẽ dễ dàng hiểu được đoạn code sau đây nói gì thôi:
Code : PHP
<?php
// Tính thể tích hình nón có bán kính 5 chiều cao 2
$volume = 5 * 5 * 3.14 * 2 * (1/3);
echo "The tich hinh non ban kinh 5 chieu cao 2 la : $volume cm<sup>3</sup><br>";

// tính thể tích hình nón bk 3 chiều cao 4
$volume = 3 * 3 * 3.14 * 4 * (1/3);
echo "the tich hinh non ban kinh 3 chieu cao 4 la : $volume cm<sup>3</sup><br>";
?>
Để viết số thập phân bạn phải dùng kí hiệu của Mĩ, tức là dùng dấu chấm ngăn cách phần nguyên và phần thập phân ! Ví dụ không được viết 3,14 mà phải là 3.14
Mình sẽ viết một hàm Volume chẳng hạn, với các thông số là bán kính r và chiều cao h, hàm này không in ra gì cả, chỉ đơn giản cho mình giá trị thể tích của hình nón thôi ! Hãy xem, có 2 cái mới ở đây đấy :
Code : PHP
<?php
// hàm dưới đây tính thể tích hình nón
function Volume ($r, $h)
{
  $vol = $r * $r * 3.14 * $h * (1/3); // tính thể tích
  return $vol; // chỉ ra giá trị mà hàm cho ra, ở đây là thể tích vol
}

$vol = Volume (3, 1);
echo "Thể tích nón có bán kính 3 chiều cao 1 là $vol";
?>
Hãy xem kĩ hàm, trong đó có cấu trúc : return $vol ;
Cấu trúc này chỉ ra giá trị mà hàm sẽ cho ra, ở đây là thể tích ! Nếu bạn viết return 15 ; thì lần nào bạn gọi hàm này nó cũng chỉ cho ra 15 thôi. Thử xem.
Như vậy mình có thể thấy rằng hàm không phải chỉ có một cách sử dụng, ở đây vì hàm cho ra một giá trị, nên mình phải gán nó vào một biến : $vol =Volume(3,1) ;
Sau đó mình mới dùng echo để in ra giá trị mà $vol chứa ! Nếu bạn làm đúng, nó phải cho ra giá trị 9.42 (trong trường hợp này) !
Cái mới thứ hai là có 2 thông số trong dấu ngoặc đơn ! Như bạn thấy đấy, một hàm có thể chứa nhiều thông số, bạn chỉ cần đặt dấu phẩy vào để ngăn cách các thông số là đủ !
Khả năng sáng tạo của hàm có thể nói là vô hạn, thường thì rõ ràng là bạn không viết hàm chỉ để tính thể tích hình nón đâu nhỉ (hơi nhảm nhảm sao í). Những gì tôi muốn bạn hiểu ở đây là cách dùng hàm và sự tiện lợi của nó, nó giúp bạn tiết kiệm khá nhiều thời gian đấy !
Sao bạn không thử tạo ra vài hàm khác chơi cho vui chút xíu trước khi mình qua phần khác nhỉ ?

Biến PHP thành cái đồng hồ biết nói

Bạn vừa xem cách tạo hàm, cách dùng hàm, cơ chế hoạt động cũng như biết hàm phục vụ cho cái gì ! Nhưng bạn vẫn chưa khám phá hết các hàm của PHP đâu, nó có hàng trăm « hàm ăn liền » lận đó !
Tôi để ý rằng mỗi khi tôi viết một hàm gì đó, thì hầu như PHP đã có hàm đó sẵn rồi mà tôi không biết ! Rất nhiều và rất tiện !
Bạn cần phải nhớ là có 2 loại hàm, một loại thực hiện những thao tác, không trả lại gì cả ! giống như thủ tục (procedure) trong Pascal á !
Còn một loại (sau khi đã thực hiện hàng đống tính toán) trả lại một giá trị ! (mà mình dùng khá thường xuyên sau này)
Sau đây là vài kiểu « hàm ăn liền » phục vụ các bạn đây :
  • Một hàm cho phép tìm kiếm và thay thế từ ngữ trong một biến
  • Một hàm cho phép gửi một file lên máy chủ
  • Một hàm cho phép tạo hình thu nhỏ (avatar)
  • Một hàm cho phép gửi mail tự động (cái này rất tiện để làm newsletter nhỉ)
  • Một hàm cho phép sửa hình, như thêm vào text, vạch vài đường, vẽ một hình vuông hay hình méo gì đó vô hình
  • Một hàm làm ẩn password
  • Một hàm hiển thị ngày giờ,..
Vân vân và vân vân …
Bây giờ mình thử nghịch cái hàm cho hiện ngày giờ nhé ! Hàm tên là date, đây là một loại « hàm ăn liền », nghĩa là mình không cần phải viết function date(..) làm gì, chỉ cần sử dụng bằng cách cho nó vài thông số mà mình cần là đủ !
Sau đây là 5 thông số thường dùng cho hàm date này :
Chú ý viết đúng in hoa và in thường nhé !
Thông sốDiễn tả
HGiờ
iPhút
dNgày
mTháng
YNăm


Và còn khoảng 30 thông số khác cho hàm date này nữa, mình sẽ gặp lại trong phần III khi bàn chi tiết hơn về hàm !
Nếu bạn muốn in ra năm : (2007)
Code : PHP
<?php
$nam = date("Y");
echo "$nam";
?>
Hoặc ngày giờ đầy đủ:
Code : PHP
<?php
// lưu trữ thông tin về ngày giờ cho các biến

$ngay= date("d");
$thang = date("m");
$nam = date("Y");
$gio = date("H");
$phut = date("i");

// bây giờ mình sẽ cho hiện ra ngày giờ đầy đủ
echo "Xin chào ! Hôm nay là ngày $ngay/$thang/$nam và bây giờ là $gio h $phut.";
?>
Xong rồi ! Bạn cho chạy thử xem ! Chú ý là hàm cho ra ngày giờ lúc bạn chạy chương trình, nên đương nhiên mỗi lúc một khác nhau !
Nếu bạn thấy giờ hiện ra không đúng thì là do server không ở cùng múi giờ với bạn ! Ví dụ bạn dùng server của Mĩ , mà bạn đang ở Việt nam thì nó vẫn cho ra giờ của Mĩ hiện tại ! Bạn nên tính toán lại sự chênh lệch giờ giấc nếu cần !
Chúng ta sắp kết thúc phần cơ bản về PHP trong vài chương nữa, những gì bạn đã học hôm nay về hàm chỉ là một phần rất nhỏ trong PHP, vẫn chưa đủ để bạn tạo một trang web cực kì hấp dẫn. Nhưng hãy kiên nhẫn, không lâu nữa bạn sẽ thấy nó hữu ích thế nào .
Bạn còn nhớ trong hàm tính thể tích hình nón trên đây không ? Thực ra nếu mình lấy 3.14 thay cho Pi là không chính xác đâu, may cho mình là PHP cho mình sẵn một hàm cho phép tính Pi chính xác luôn ! Hàm này không có thông số, chỉ đơn giản là Pi(), bạn hãy thử thay Pi() cho 3.14 xem !

Hết chương 5



Copyright© NGUYỄN Thanh Trà