Kodokon kodokon.com

ฟังก์ชัน: การประกาศ การระบุชนิด และ return

สร้างฟังก์ชันของคุณเองด้วยพารามิเตอร์ที่ระบุชนิด ค่าเริ่มต้น และค่าที่คืนกลับมา

8 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

ฟังก์ชัน (function) คือบล็อกคำสั่งที่คุณตั้งชื่อให้ เพื่อนำกลับมาใช้ซ้ำได้บ่อยเท่าที่ต้องการด้วยการ เรียก (call) ง่าย ๆ เขียนครั้งเดียว ใช้ได้ทุกที่ นั่นคือหลักการ คุณประกาศมันด้วยคำสงวน function ตามด้วยชื่อ วงเล็บ และบล็อกในวงเล็บปีกกา เครื่องหมาย : void หลังวงเล็บบอกว่าฟังก์ชันไม่คืนค่าใด ๆ มันเพียงแค่ทำงาน

PHP
<?php

function sayHello(): void
{
    echo "Hello and welcome!<br>";
}

sayHello();
sayHello();
ประกาศครั้งเดียว เรียกสองครั้ง ได้ผลลัพธ์สองครั้ง

วงเล็บบรรจุ พารามิเตอร์ (parameter) คือตัวแปรที่ฟังก์ชันรับในการเรียกแต่ละครั้ง ส่วนค่าจริงที่ส่งเข้าไปตอนเรียกเรียกว่า อาร์กิวเมนต์ (argument) ใน PHP สมัยใหม่ คุณ ระบุชนิด ให้พารามิเตอร์แต่ละตัว (float $price) และค่าที่คืนกลับมา (: float หลังวงเล็บ) จากนั้น PHP จะปฏิเสธค่าที่ผิดชนิด ซึ่งช่วยป้องกันบั๊กได้มากมาย คำสั่ง return ส่งผลลัพธ์กลับไปยังจุดที่เรียก และหยุดฟังก์ชันทันที

PHP
<?php

function addTax(float $price): float
{
    return $price * 1.2;
}

echo addTax(100);
echo "<br>";
echo addTax(50);
แสดง 120 แล้วก็ 60 ผลลัพธ์ถูกส่งกลับไปยังผู้เรียก

พารามิเตอร์สามารถรับ ค่าเริ่มต้น (default value) ได้ด้วย = หากการเรียกไม่ได้ส่งอาร์กิวเมนต์ให้พารามิเตอร์นั้น ค่าเริ่มต้นจะเข้ามาแทน กฎทองคือ พารามิเตอร์ที่มีค่าเริ่มต้นต้องอยู่ หลัง พารามิเตอร์ที่จำเป็น

PHP
<?php

function greet(
    string $name,
    string $greeting = "Hello"
): string {
    return "{$greeting}, {$name}!";
}

echo greet("Awa");
echo "<br>";
echo greet("Awa", "Good evening");
หากไม่มีอาร์กิวเมนต์ตัวที่สอง คำทักทายจะเป็น “Hello”
PHP
<?php

function totalPrice(
    float $unitPrice,
    int $quantity = 1
): float {
    return $unitPrice * $quantity;
}

echo totalPrice(19.9, 3);
echo "<br>";
echo totalPrice(8.5);
สรุปรวม: ชนิด ค่าเริ่มต้น และ return ทั้งหมดอยู่ด้วยกัน

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. คำสงวนใดใช้ประกาศฟังก์ชันใน PHP?
    • def
    • function
    • func
  2. คำสั่ง return ทำอะไร?
    • มันพิมพ์ค่าออกมาที่หน้าจอ
    • มันคืนค่ากลับมาและหยุดฟังก์ชัน
    • มันเริ่มฟังก์ชันใหม่ตั้งแต่ต้น
  3. จาก function greet(string $name, string $greeting = "Hello") ค่าของ $greeting คืออะไรถ้าคุณเรียก greet("Awa")?
    • สายอักขระว่าง
    • null
    • ค่าเริ่มต้น “Hello”