ฟังก์ชัน PHP
พลังที่แท้จริงของ PHP มาจากฟังก์ชันของมัน
PHP มีฟังก์ชันในตัวมากกว่า 1,000 ฟังก์ชัน และนอกจากนี้ คุณสามารถสร้างฟังก์ชันที่กำหนดเองได้
ฟังก์ชั่น PHP ในตัว
PHP มีฟังก์ชันในตัวมากกว่า 1,000 ฟังก์ชันที่สามารถเรียกได้โดยตรงจากภายในสคริปต์เพื่อทำงานเฉพาะ
โปรดดูข้อมูลอ้างอิง PHP ของเราสำหรับภาพรวมที่สมบูรณ์ของ ฟังก์ชัน PHP ในตัว
ฟังก์ชั่นที่กำหนดโดยผู้ใช้ PHP
นอกจากฟังก์ชัน PHP ในตัวแล้ว คุณยังสามารถสร้างฟังก์ชันของคุณเองได้
- ฟังก์ชันคือบล็อกของข้อความสั่งที่สามารถใช้ซ้ำๆ ในโปรแกรมได้
- ฟังก์ชันจะไม่ทำงานโดยอัตโนมัติเมื่อโหลดหน้า
- ฟังก์ชันจะถูกเรียกใช้งานโดยเรียกใช้ฟังก์ชัน
สร้างฟังก์ชันที่กำหนดโดยผู้ใช้ใน PHP
การประกาศฟังก์ชันที่ผู้ใช้กำหนดขึ้นต้นด้วยคำว่าfunction
:
ไวยากรณ์
function functionName()
{
code to be executed;
}
หมายเหตุ:ชื่อฟังก์ชันต้องขึ้นต้นด้วยตัวอักษรหรือขีดล่าง ชื่อฟังก์ชันไม่คำนึงถึงขนาดตัวพิมพ์
เคล็ดลับ:ตั้งชื่อฟังก์ชันที่สะท้อนถึงสิ่งที่ฟังก์ชันทำ!
ในตัวอย่างด้านล่าง เราสร้างฟังก์ชันชื่อ "writeMsg()" วงเล็บปีกกาเปิด ( { ) ระบุจุดเริ่มต้นของโค้ดฟังก์ชัน และวงเล็บปีกกาปิด ( } ) ระบุจุดสิ้นสุดของฟังก์ชัน ฟังก์ชั่นส่งออก "สวัสดีชาวโลก!" หากต้องการเรียกใช้ฟังก์ชัน ให้เขียนชื่อตามด้วยเครื่องหมายวงเล็บ ():
ตัวอย่าง
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // call the function
?>
อาร์กิวเมนต์ฟังก์ชัน PHP
ข้อมูลสามารถส่งผ่านไปยังฟังก์ชันผ่านอาร์กิวเมนต์ได้ อาร์กิวเมนต์เป็นเหมือนตัวแปร
อาร์กิวเมนต์ถูกระบุหลังชื่อฟังก์ชัน ภายในวงเล็บ คุณสามารถเพิ่มอาร์กิวเมนต์ได้มากเท่าที่ต้องการ เพียงแค่คั่นด้วยเครื่องหมายจุลภาค
ตัวอย่างต่อไปนี้มีฟังก์ชันที่มีหนึ่งอาร์กิวเมนต์ ($fname) เมื่อเรียกใช้ฟังก์ชัน familyName() เรายังส่งต่อชื่อ (เช่น Jani) และใช้ชื่อดังกล่าวในฟังก์ชัน ซึ่งแสดงชื่อต้นที่แตกต่างกันหลายชื่อ แต่มีนามสกุลเท่ากัน:
ตัวอย่าง
<?php
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>
ตัวอย่างต่อไปนี้มีฟังก์ชันที่มีสองอาร์กิวเมนต์ ($fname และ $year):
ตัวอย่าง
<?php
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
?>
PHP เป็นภาษาที่พิมพ์อย่างหลวม ๆ
ในตัวอย่างข้างต้น สังเกตว่าเราไม่จำเป็นต้องบอก PHP ว่าตัวแปรนั้นเป็นประเภทข้อมูลใด
PHP เชื่อมโยงชนิดข้อมูลกับตัวแปรโดยอัตโนมัติ ขึ้นอยู่กับค่าของตัวแปร เนื่องจากประเภทข้อมูลไม่ได้กำหนดไว้อย่างเข้มงวด คุณจึงทำสิ่งต่างๆ ได้ เช่น การเพิ่มสตริงลงในจำนวนเต็มโดยไม่ทำให้เกิดข้อผิดพลาด
ใน PHP 7 มีการเพิ่มการประกาศประเภท สิ่งนี้ทำให้เรามีตัวเลือกในการระบุประเภทข้อมูลที่คาดหวังเมื่อประกาศฟังก์ชัน และโดยการเพิ่มการstrict
ประกาศ มันจะส่ง "ข้อผิดพลาดร้ายแรง" หากประเภทข้อมูลไม่ตรงกัน
ในตัวอย่างต่อไปนี้ เราพยายามส่งทั้งตัวเลขและสตริงไปยังฟังก์ชันโดยไม่ต้องใช้strict
:
ตัวอย่าง
<?php
function addNumbers(int $a, int $b) {
return $a
+ $b;
}
echo addNumbers(5, "5 days");
// since strict is NOT enabled "5 days" is
changed to int(5), and it will return 10
?>
เพื่อระบุว่าstrict
เราต้องตั้งdeclare(strict_types=1);
ค่า ต้องอยู่ในบรรทัดแรกของไฟล์ PHP
ในตัวอย่างต่อไปนี้ เราพยายามส่งทั้งตัวเลขและสตริงไปยังฟังก์ชัน แต่ที่นี่เราได้เพิ่มการstrict
ประกาศ:
ตัวอย่าง
<?php declare(strict_types=1); // strict requirement
function
addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5
days");
// since strict is enabled and "5 days" is not an integer, an
error will be thrown
?>
การstrict
ประกาศบังคับให้สิ่งต่าง ๆ ถูกใช้ในทางที่ตั้งใจไว้
ค่าอาร์กิวเมนต์เริ่มต้นของ PHP
ตัวอย่างต่อไปนี้แสดงวิธีการใช้พารามิเตอร์เริ่มต้น หากเราเรียกใช้ฟังก์ชัน setHeight() โดยไม่มีอาร์กิวเมนต์ จะใช้ค่าเริ่มต้นเป็นอาร์กิวเมนต์:
ตัวอย่าง
<?php declare(strict_types=1); // strict requirement
function setHeight(int $minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
?>
ฟังก์ชัน PHP - ส่งกลับค่า
หากต้องการให้ฟังก์ชันคืนค่า ให้ใช้return
คำสั่ง:
ตัวอย่าง
<?php declare(strict_types=1); // strict requirement
function sum(int $x,
int $y) {
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>
การประกาศประเภทการส่งคืน PHP
PHP 7 ยังรองรับ Type Declarations สำหรับreturn
คำสั่ง เช่นเดียวกับการประกาศประเภทสำหรับอาร์กิวเมนต์ของฟังก์ชัน โดยการเปิดใช้งานข้อกำหนดที่เข้มงวด จะทำให้เกิด "ข้อผิดพลาดร้ายแรง" ในประเภทที่ไม่ตรงกัน
ในการประกาศชนิดของฟังก์ชัน return ให้เพิ่มโคลอน (
:
) และ type ก่อน{
วงเล็บเปิด ( ) เมื่อประกาศฟังก์ชัน
ในตัวอย่างต่อไปนี้ เราระบุประเภทการส่งคืนสำหรับฟังก์ชัน:
ตัวอย่าง
<?php declare(strict_types=1); // strict requirement
function addNumbers(float
$a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>
คุณสามารถระบุประเภทการส่งคืนที่แตกต่างจากประเภทอาร์กิวเมนต์ได้ แต่ตรวจสอบให้แน่ใจว่าการส่งคืนเป็นประเภทที่ถูกต้อง:
ตัวอย่าง
<?php declare(strict_types=1); // strict requirement
function addNumbers(float
$a, float $b) : int {
return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
?>
ผ่านอาร์กิวเมนต์โดยการอ้างอิง
ใน PHP อาร์กิวเมนต์มักจะส่งผ่านด้วยค่า ซึ่งหมายความว่าสำเนาของค่าถูกใช้ในฟังก์ชันและตัวแปรที่ส่งผ่านไปยังฟังก์ชันไม่สามารถเปลี่ยนแปลงได้
เมื่ออาร์กิวเมนต์ของฟังก์ชันถูกส่งผ่านโดยการอ้างอิง การเปลี่ยนแปลงอาร์กิวเมนต์จะเปลี่ยนตัวแปรที่ส่งผ่านเข้ามาด้วย ในการเปลี่ยนอาร์กิวเมนต์ของฟังก์ชันเป็นข้อมูลอ้างอิง ตัว&
ดำเนินการจะใช้:
ตัวอย่าง
ใช้อาร์กิวเมนต์ pass-by-reference เพื่ออัปเดตตัวแปร:
<?php
function add_five(&$value) {
$value += 5;
}
$num
= 2;
add_five($num);
echo $num;
?>