Home » Bài 9: Hàm (Function) Trong PHP

Bài 9: Hàm (Function) Trong PHP

Functions in PHP

by Tan Nguyen
14 minutes read

Tiếp tục series học PHP căn bản thì trong bài học này mình sẽ giới thiệu cho các bạn về hàm (function) trong PHP là gì, cấu trúc của một hàm và cách sử dụng nó như thế nào nhé!

function ham trong php

Hàm (Function) Trong PHP

Hàm là gì?

Function (hay hàm) là một hoặc nhiều đoạn code được viết ra để thực thi một hoặc nhiều hành động mỗi khi gọi nó, hàm có khả năng gọi đi gọi lại để sử dụng nhiều lần trong chương trình (Mang tính tái sử dụng).

Để giảm thời gian lặp lại 1 thao tác code nhiều lần, PHP đã hỗ trợ người lập trình việc tự định nghĩa cho mình những hàm có khả năng lặp lại nhiều lần trong website. Việc này cũng giúp cho người lập trình kiểm soát mã nguồn một cách mạch lạc. Đồng thời có thể tùy biến ở mọi trang mà không cần phải khởi tạo hay viết lại mã lệnh như HTML thuần.

PHP hiện nay có hơn 1000 Function khác nhau được xây dựng sẵn để thực hiện các nhiệm vụ tùy vào từng mục đích của bạn.

Vì sao nên sử dụng hàm

Hàm giúp tổ code tốt hơn: Hàm giúp nhóm các block code thực hiện chức năng liên quan đến nhiệm vụ cụ thể nào đó lại với nhau.

Tái sử dụng trong code – Một khi đã được sử dụng, Hàm có thể sử dụng mà không cần định nghĩa lại. Việc này giúp tiết kiệm thời gian lập trình, giảm trùng lặp code, giảm kích thước chương trình.

Dễ dàng bảo trì (Easy Maintenance) – Khi ta lặp code và nếu có thay đổi logic hay yêu cầu thì phải thay đổi toàn bộ vị trí lặp đó. Điều đó rất mất thời gian và thay vì thế hàm sẽ giúp chúng ta có sửa 1 chỗ và cập nhật cả chương trình.

Quy tắc khi tạo hàm

  • Tên hàm phải bắt đầu với một ký tự hoặc dấu gạch dưới.
  • Tên hàm không được bắt đầu bằng số.
  • Đặt tên của hàm phải là duy nhất.
  • Tên của hàm không chứa dấu cách.
  • Tên của hàm phải mô tả được công việc của nó
  • Hàm chấp nhận tham số và có thể trả về giá trị

Cấu trúc của một hàm

Hàm tự định nghĩa không tham số

<?php
function functionName() {
    //code được thực thi;
}
// Gọi function
functionName(); 
?>

Trong đó functionName là tên cùa hàm, cách đặt tên hàm cũng phải tuân thủ theo các ràng buộc tương tự như đặt tên biến.

Ví dụ: Xuất thứ tự chữ cái từ một tới 5 có sử dụng duyệt mảng.

<?php
    function xuatchucai() {
        $name= array("one", "two", "three", "four", "five");
        foreach ($name as $value) { 
            echo "$value <br>"; 
        }
    }
    //gọi hàm
    xuatchucai();
?>

Hàm tự định nghĩa với các tham số

Trong PHP chúng ta có thể khai báo hàm có tham số hoặc không có tham số. Các tham số đóng vai trò là các biến sử dụng bên trong hàm và chúng ta có thể truyền dữ liệu đầu vào cho các biến này khi gọi hàm.

<?php
function functionName($giatri1, $giatri2) {
    //code được thực thi;
}
?>

Trong đó, các biến $giatri1, $giatri2 là các tham số mà bạn muốn truyền vào. Các tham số này là các biến truyền vào thuộc một kiểu dữ liệu bất kỳ nào đó ( và không giới hạn số lượng tham số truyền vào.)

Ví dụ:

<?php
    function output($string) {
        echo "$string <br>";
    }
    //gọi hàm
    output("Chào Mừng");
    output("Đến với");
    output("Series Học PHP căn bản");
?>

Hàm tự định nghĩa với giá trị trả về

Hàm có thể trả về một giá trị khi được gọi. Để xác định một hàm với giá trị trả về chúng ta sử dụng từ khoá return.

<?php
function functionName(có hoặc không có đối số) {
    //code được thực thi;
    return giatri;
}
?>

Lệnh return dùng để trả về cho hàm một giá trị. (Sau khi thực thi xong, hàm sẽ có một giá trị, lúc đó nó có thể được sử dụng giống như một biến)

Lưu ý: Trong một hàm, sau khi thực thi xong lệnh return thì hàm sẽ kết thúc (tức là những câu lệnh nằm phía sau lệnh return sẽ không được thực thi). Cho nên trong một hàm, lệnh return cần phải được đặt ở vị trí cuối cùng.

Ví dụ: tính tích của 2 số đơn giản.

<?php
    function tich($a, $b){
        $ketqua = $a * $b;
        return $ketqua;
    }
    //gọi hàm
    echo tich(15,20);
    //ket qua xuat ra man hinh se la 300
?>
Lưu ý: Khi đặt tên hàm, tên hàm có thể là một tổ hợp bất kỳ những chữ cái, con số và dấu gạch dưới, nhưng không được bắt đầu bằng số mà phải bắt đầu từ chữ cái hoặc dấu gạch dưới.

Cách gọi hàm

Nếu các bạn để ý các ví dụ bên trên thì bạn sẽ thấy ở mỗi ví dụ mình đều cho lại 1 comment gọi hàm trong chương trình. Cách gọi một function rất đơn giản, sau khi bạn đã xây dựng hàm xong thì bạn chỉ cần code theo cú pháp tương tự mãu bên dưới.

functionName();
//hoặc
functionName($param);

Trong đó:

  • functionName: là tên của hàm các bạn muốn gọi.
  • $param: là tham số các bạn muốn truyền vào hàm (nếu lúc khai báo hàm có yêu cầu truyền tham số).

Bạn hãy xem lại ví dụ bên dưới:

<?php
    function xuatchucai(){
        $name= array("one", "two", "three", "four", "five");
        foreach ($name as $value){ 
            echo "$value <br>"; 
        }
    }
    //sau khi xây dựng xong 1 hàm bạn hãy đóng làm lại bằng dấu } và sau đó gọi hàm bằng cách viết lại têm của hàm đó và thêm () phía sau.
    xuatchucai();
    //Không được code dòng gọi hàm khi vẫn đang trong hàm mà bạn đang xây dựng
?>
Lưu ý: Bạn không được gọi hàm khi bạn vẫn chưa xây dựng xong hàm đó hoặc chưa thực hiện đóng hàm lại nhé!

Thiết lập giá trị mặc định cho tham số hàm trong PHP

Bạn có thể thiết lập một tham số có một giá trị mặc định nếu người gọi hàm không truyền cho nó.

Nếu một hàm trong php bạn khai báo có biến truyền vào nhưng đến lúc gọi hàm để sử dụng bạn lại không truyền biến vào thì hệ thống sẽ báo lỗi ngay. Vì thế, để không bị ràng buộc khi sử dụng hàm có tham số truyền vào, ta sẽ thiết lập giá trị mặc định cho tham số đó ngay từ bước đầu xây dựng hàm.

<?php
function functionName($giatri = "gia tri mac dinh") {
    //code được thực thi;
}
?>

Ví dụ 1

<?php
    function printMessage($param = "Giá trị mặc định")
    {
        echo $param;
    }
    //gọi hàm có truyền tham số là một chuỗi
    printMessage("Tham số này là một chuỗi được truyền vào!!!<br />");
    //gọi hàm khi không truyền tham số nào cả
    printMessage();
?>

Kết quả:

Tham số này là một chuỗi được truyền vào!!!
Giá trị mặc định

Ví dụ 2

<?php
    function printMessage($a, $b, $c = 5)//$c sẽ có gia trị mặc định là 5
    {
    echo $a + $b + $c;
    }
    //gọi hàm có truyền tất cả tham số vào
    printMessage(2,3,6); // khi này hàm sẽ tự hiểu $a =4, $b =7, $c = 6
    echo " - ";
    //gọi hàm khi không truyền tham số $c vào 
    printMessage(4,7); // khi này hàm sẽ tự hiểu $a =4, $b =7 và $c mặc định sẽ bằng 5
?>

Kết quả xuất ra màn hình: 11 – 16

Truyền tham số bằng tham chiếu trong PHP

Tương tự như phần giới thiệu về cách thay đổi phần tử hiện tại bằng cách thay đổi tham chiếu mà mình đã nói qua trong bài 7 Vòng lặp Foreach ở phần thay đổi phần tử bằng tham chiếu

Ở trong function, PHP cũng tạo ra một bản sao chép giá trị của biến đó khi nạp tham số vào hàm, cho nên khi thay đổi giá trị của tham số này trong hàm thì giá trị của biến gốc sẽ vẫn như cũ mà không bị thay đổi theo.

Đôi lúc ta cần phải thay đổi luôn cả gái trị của biến gốc đang được gọi tham số trong hàm đó vì một số lý do của chương trình. Chính vì thế khi này ta sẽ phải sử dụng tham số bởi dạng tham chiếu.

Để dễ hiểu các bạn hãy xem ví dụ dưới đây:

<?php
    // Tạo 1 biến
    $bien = 0;

    // Hàm tăng giá trị tham số truyền vào lên 1
    function tinh_cong(&$bien) //gọi tham chiếu bằng cách thêm dấu &
    {
        $bien = $bien + 1;
        return $bien;
    }

    // Xuất giá trị trả về của hàm cộng
    echo tinh_cong($bien); //kết quả màn hình: 1

    // Xuất giá trị của biến gốc
    echo $bien; //kết quả màn hình: 1
    //bạn sẽ thấy biến gốc bây giờ đã thay đổi
?>

==> Bạn có thể truyền một tham số bởi tham chiếu thông qua việc thêm một ký hiệu & trước tên biến trong lời gọi hàm hoặc định nghĩa hàm.

Kiểm tra hàm đã tồn tại

Trong thực tế khi xây dựng các dự án với PHP hướng thủ tục thì số lượng các hàm sẽ không dừng ở con số 5,10,20,… mà nó sẽ lớn hơn rất là nhiều, như vậy thì chuyện trùng lặp hàm là điều không thể tránh khỏi đối với một lập trình viên không chuyên nghiệp hoặc một lý do nào khác khiến việc trùng lặp hàm xảy ra. Chính vì đều đó trong PHP đã cung cấp cho chúng ta một hàm function_exists() để giải quyết vấn đề đó.

Cú Pháp

function_exists('functionName');

Trong đó: functionName là tên của hàm các bạn kiểm tra và hàm này sẽ trả về giá trị TRUE nếu hàm đã tồn tại và  ngược lại FALSE nếu chưa tồn tại.

<?php
if (!function_exists('loopNumber')) {
    function loopNumber($number = 0)
    {
        for ($i = 0; $i <= $number; $i++) {
            echo $i;
        }
    }
}
//theo toidicode

Built-in Function trong PHP

Built in Functions là các Functions có sẵn khi cài đặt PHP. Nó thực hiện công việc thường gặp giúp PHP làm việc hiệu quả.

Đối với PHP, Built in Functions được chia thành nhiều loại khác nhau như: String Functions, Numeric Functions

Trong rất rất nhiều trường hợp nhằm giúp rút gọn code và tăng hiệu xuất cho code mà ta sẽ sử dụng hàm có sẵn trong PHP thay vì sử dụng các hàm tự tạo làm tốn thời gian biên dịch cho chương trình.

Kết thúc

Qua bài trên mình đã giới thiệu và hướng dẫn các bạn cách khai báo và sử dụng hàm (function) trong PHP, đây là kiến thức quan trọng trong lập trình hướng đội tượng và các bạn sẽ phải tận dụng hàm rất nhiều trong các trương trình, dự án sau này, cho nên các bạn hãy nắm vững khái niệm về hàm nhé! Nếu có thắc mắc gì các bạn hãy để lại comment bên dưới bài viết đê mọi người cùng thảo luận nhé!

Ở bài tiếp theo mình sẽ giới thiệu cho các bạn khái niệm về mảng (Array) trong PHP.

Hãy tiếp tục trong series học PHP căn bản ở các bài viết tiếp theo các bạn nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!

Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG
5/5 - (3 votes)

Related Posts

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More

0
Would love your thoughts, please comment.x
()
x