PHP101 – ฟังก์ชัน (Functions)

ฟังก์ชัน (Functions) เป็นส่วนสำคัญในการเขียนโค้ด PHP ที่เป็นระเบียบ นำกลับมาใช้ใหม่ได้ และง่ายต่อการจัดการ

ฟังก์ชันคืออะไร?

ฟังก์ชันคือบล็อกของโค้ดที่ออกแบบมาเพื่อทำงานเฉพาะอย่าง เมื่อคุณต้องการใช้งานโค้ดในบล็อกนั้น คุณสามารถเรียกใช้ฟังก์ชันได้

การสร้างฟังก์ชัน (Defining a Function)

ในการสร้างฟังก์ชันใน PHP คุณต้องทำตามรูปแบบนี้:

PHP
<?php

  function functionName($parameter1, $parameter2, ...) {
    // โค้ดที่จะทำงานเมื่อเรียกใช้ฟังก์ชัน
    return $returnValue; // Optional
  }

?>
  • function: คำหลักที่ใช้ในการประกาศฟังก์ชัน
  • functionName: ชื่อของฟังก์ชัน (ควรสื่อถึงการทำงานของฟังก์ชัน)
  • ($parameter1, $parameter2, ...): พารามิเตอร์ (หรืออาร์กิวเมนต์) คือตัวแปรที่รับค่าจากภายนอกเมื่อมีการเรียกใช้ฟังก์ชัน ฟังก์ชันอาจมีหรือไม่มีพารามิเตอร์ก็ได้
  • { ... }: บล็อกของโค้ดที่ประกอบด้วยคำสั่งต่างๆ ที่จะทำงานเมื่อฟังก์ชันถูกเรียกใช้
  • return $returnValue; (Optional): คำสั่ง return ใช้เพื่อส่งค่ากลับไปยังส่วนที่เรียกใช้ฟังก์ชัน ฟังก์ชันอาจมีหรือไม่มีการคืนค่าก็ได้

การเรียกใช้ฟังก์ชัน (Calling a Function)

ในการเรียกใช้ฟังก์ชัน เพียงแค่พิมพ์ชื่อฟังก์ชันตามด้วยวงเล็บ () และส่งค่าอาร์กิวเมนต์ (ถ้ามี)

PHP
<?php

  function greet($name) {
    echo "สวัสดี, " . $name . "!";
  }

  greet("John"); // เรียกใช้ฟังก์ชัน greet โดยส่งค่า "John" เป็นอาร์กิวเมนต์

?>

พารามิเตอร์ของฟังก์ชัน (Function Parameters)

ฟังก์ชันสามารถรับค่าจากภายนอกผ่านทางพารามิเตอร์ คุณสามารถกำหนดชนิดข้อมูลของพารามิเตอร์ได้ (ตั้งแต่ PHP 7)

การกำหนดชนิดข้อมูล (Type Hinting)

PHP
<?php

  function addNumbers(int $a, int $b) {
    return $a + $b;
  }

  echo addNumbers(5, 3); // Output: 8
  // echo addNumbers(5, "3"); // จะเกิด Fatal Error เนื่องจาก "3" ไม่ใช่ integer

?>

ค่าเริ่มต้นของพารามิเตอร์ (Default Parameter Values)

คุณสามารถกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ได้ หากตอนเรียกใช้ฟังก์ชันไม่ได้ส่งค่าสำหรับพารามิเตอร์นั้น จะใช้ค่าเริ่มต้นแทน

PHP
<?php

  function setGreeting($greeting = "Hello") {
    echo $greeting . ", world!";
  }

  setGreeting(); // Output: Hello, world!
  setGreeting("Hi"); // Output: Hi, world!

?>

การคืนค่าจากฟังก์ชัน (Returning Values)

ฟังก์ชันสามารถส่งค่ากลับไปยังส่วนที่เรียกใช้ได้ โดยใช้คำสั่ง return คุณยังสามารถกำหนดชนิดข้อมูลของค่าที่ฟังก์ชันจะคืนได้ (ตั้งแต่ PHP 7)

PHP
<?php

  function multiply(int $x, int $y): int {
    return $x * $y;
  }

  $result = multiply(4, 6);
  echo "ผลลัพธ์คือ: " . $result; // Output: ผลลัพธ์คือ: 24

?>

ขอบเขตของตัวแปร (Variable Scope)

ขอบเขตของตัวแปรกำหนดว่าตัวแปรสามารถเข้าถึงได้จากส่วนใดของสคริปต์ PHP

Local Scope

ตัวแปรที่ประกาศภายในฟังก์ชันจะมีขอบเขตเป็น local นั่นหมายความว่าสามารถใช้งานได้เฉพาะภายในฟังก์ชันนั้นเท่านั้น

PHP
<?php

  function myFunction() {
    $localVariable = "ฉันอยู่ในฟังก์ชัน";
    echo $localVariable;
  }

  myFunction(); // Output: ฉันอยู่ในฟังก์ชัน
  // echo $localVariable; // จะเกิด Error เนื่องจาก $localVariable ไม่สามารถเข้าถึงได้จากภายนอกฟังก์ชัน

?>

Global Scope

ตัวแปรที่ประกาศภายนอกฟังก์ชันจะมีขอบเขตเป็น global และไม่สามารถเข้าถึงได้โดยตรงภายในฟังก์ชัน หากต้องการเข้าถึงตัวแปร global ภายในฟังก์ชัน คุณต้องใช้คำหลัก global

PHP
<?php

  $globalVariable = "ฉันอยู่ภายนอกฟังก์ชัน";

  function anotherFunction() {
    global $globalVariable;
    echo $globalVariable;
  }

  anotherFunction(); // Output: ฉันอยู่ภายนอกฟังก์ชัน

?>

ประโยชน์ของการใช้ฟังก์ชัน

  • การนำโค้ดกลับมาใช้ใหม่: คุณสามารถกำหนดบล็อกของโค้ดเป็นฟังก์ชันและเรียกใช้ได้หลายครั้งโดยไม่ต้องเขียนโค้ดซ้ำ
  • ความเป็นระเบียบ: ฟังก์ชันช่วยแบ่งโค้ดออกเป็นส่วนๆ ที่มีความหมาย ทำให้โค้ดอ่านง่ายและจัดการได้ง่ายขึ้น
  • การบำรุงรักษาที่ง่ายขึ้น: เมื่อคุณต้องการแก้ไขการทำงานบางอย่าง คุณสามารถแก้ไขเฉพาะในฟังก์ชันที่เกี่ยวข้องได้

กิจกรรมใน Module 4

  1. สร้างฟังก์ชันง่ายๆ ที่ไม่มีพารามิเตอร์และแสดงข้อความบางอย่าง
  2. สร้างฟังก์ชันที่รับพารามิเตอร์หนึ่งหรือสองตัวและแสดงผลลัพธ์ที่ได้จากการประมวลผล
  3. เขียนฟังก์ชันที่มีการคืนค่า และเรียกใช้ฟังก์ชันนั้นเพื่อนำค่าที่คืนมาใช้งาน
  4. ทดลองกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ของฟังก์ชัน
  5. ศึกษาและทดลองเกี่ยวกับขอบเขตของตัวแปร (local และ global)

ใน Module ถัดไป เราจะมาเรียนรู้เกี่ยวกับ Array ซึ่งเป็นโครงสร้างข้อมูลที่สำคัญในการจัดเก็บและจัดการข้อมูลหลายๆ ค่าในตัวแปรเดียวครับ!

ความคิดเห็น