Apichart Nakarungutti
The Cake is a Lie
ฟังชั่น (function) จะแบ่งเป็น 2 ประเภทคือ
abs()
, max()
, min()
ในที่นี้จะพูดถึงการสร้างฟังชั่นขึ้นมาใช้เอง ส่วน built-in function ดูได้จาก W3School (แต่อาจจะนำมาเขียนถึงในบางฟังชั่น)
การสร้างฟังชั่น จะมีรูปแบบประมาณนี้
<?php
function function_name($parameter) {
// code
}
ตัวอย่างการสั่งพิมพ์ข้อความโดยไม่มีการส่งค่า และคืนค่า
<?php
function stand_up() {
echo 'Please stand up!';
}
stand_up();
// print: Please stand up!
สำหรับการส่งค่าไปยังฟังชั่น สามารถสั่งได้ 2 แบบคือ
<?php
// By value function
function double($num) {
echo 'Double value of ' . $num . ' is ';
$num = $num * 2;
echo $num;
}
// By reference function
function half(&$num) {
echo 'Half value of ' . $num . ' is ';
$num = $num / 2;
echo $num;
}
$x = 50;
double($x);
// print: Double value of 50 is 100
echo $x;
// print: 50
half($x);
// print: Half value of 50 is 25
echo $x;
// print: 25
นอกจากนี้ยังกำหนดค่าโดยปริยาย (default) ให้กับพารามิเตอร์ของฟังชั่นได้โดยใช้ =
ส่วนมากมักจะใส่ตัวแปรที่มีค่าโดยปริยายไว้หลังสุด
<?php
function vat_include($prize, $vat = 7) {
$total = $prize + (($prize * $vat) / 100);
echo 'Payment: ' . $total;
}
// use default vat = 7%
vat_include(200);
// print: Payment: 214
// use custom vat = 10%
vat_include(1000, 10);
//print: Payment: 1100
การคืนค่าจากฟังชั่น ใช้ return
<?php
function power_up($num) {
return $num * $num;
}
$pow = power_up(20);
// $pow = 400
return
จะถือว่าเป็นการจบการทำงานของฟังชั่นนั้น เมื่อเจอ return
โค้ดที่อยู่หลัง return
จะไม่ถูกเรียกใช้งาน จึงสามารถนำไปประยุกต์ให้หยุดการทำงานของฟังชั่นเมื่อพบข้อผิดพลาดได้
<?php
function divide_func($base, $divider) {
if (0 == $divide) {
echo 'Cannot divide by zero';
return;
}
$result = $base / $divider;
echo 'Result is ' . $result;
}
ใช้ฟังชั่นเมื่อไหร่? ใช้เมื่อรู้สึกว่า จะต้องเขียนชุดคำสั่งเดิม ๆ มากกว่า 1 ครั้ง จำไว้ว่า โปรแกรมเมอร์นั้นขี้เกียจ เราจะไม่เขียนชุดคำสั่งเดิม ๆ ซ้ำเป็นครั้งที่ 2 (ที่จริง เพื่อให้แก้ไขจัดการง่าย ถ้าหากโค้ดมีบั๊ก แก้ที่เดียวจบ)