ค่าคงที่
ค่าคงที่ (Constants) คือค่าของ Literal ใดๆ ที่ถูกกำหนดให้กับตัวแปรค่าคงที่ ค่าคงที่จะไม่สามารถเปลี่ยนแปลงได้ภายในโปรแกรมและเป็นได้เพียงค่าเดียวตั้งแต่โปรแกรมเริ่มจนสิ้นสุดการทำงาน ในภาษา PHP คุณสามารถประกาศค่าคงที่ได้สองแบบโดยการใช้ฟังก์ชัน define() และคำสั่ง Const
การประกาศค่าคงที่ด้วยฟังก์ชัน define()
ในการประกาศค่าคงที่ในภาษา PHP เราจะใช้ฟังก์ชัน define()
ซึ่งเป็นฟังก์ชันสำหรับการประกาศค่าคงที่ในพื้นฐาน มาดูตัวอย่างการใช้งาน
<?php
define('NAME', 'MARCUSCODE');
define('YEAR', 2016);
define('blue', '#0000ff', true);
?>
ในตัวอย่างเราได้ประกาศค่าคงที่ 3 ตัว โดยฟังก์ชันอาร์กิวเมนต์ตัวแรกจะเป็นชื่อของค่าคงที่ ซึ่งเป็น String Literal อาร์กิวเมนต์ตัวที่สองเป็น Literal ใดๆ ในภาษา PHP สำหรับอาร์กิวเมนต์ตัวที่สามเป็นทางเลือก ซึ่งถ้ากำหนดให้เป็น true
จะทำให้ค่าคงที่เป็นแบบ case-insensitive นั่นหมายถึงคุณสามารถเรียกใช้ทั้ง blue
และ BLUE
ได้ ซึ่งโดยปกติแล้วค่านี้จะเป็น false
ต่อไปมาดูตัวอย่างการใช้งานค่าคงที่ในภาษา PHP
<?php
define('NAME', 'MARCUSCODE');
define('YEAR', 2016);
define('blue', '#0000ff', true);
echo "Welcome to " . NAME . ".\n";
echo "Next year is " . (YEAR + 1) . ".\n";
if (BLUE !== null) {
echo 'BLUE constant is defined.';
}
?>
ในตัวอย่างเราประกาศค่าคงที่ NAME
YEAR
และ blue
และกำหนดค่าให้กับค่าคงที่เหล่านี้ เราสามารถใช้งานค่าคงที่ได้เหมือนกับตัวแปร ในการใช้กับตัวดำเนินการ หรือคำสั่งตรวจสอบเงื่อนไขต่างๆ
ค่าคงที่ NAME
เป็นค่าคงที่แบบ String YEAR
เป็นค่าคงที่แบบจำนวนเต็ม (Integer) และสุดท้าย blue
เป็นค่าคงที่แบบ String เช่นเดียวกันกับค่าคงที่แรก แต่เราได้กำหนดให้พารามิเตอร์ตัวที่สามเป็น true
นั่นหมายความว่าเราสามารถใช้ค่าคงที่แบบ case-insensitive ได้ เช่น BLUE Blue หรือ BlUe เป็นต้น และเราได้แสดงผลค่าคงที่แต่ละตัวออกมา และตรวจสอบเงือนไขด้วยคำสั่ง If ซึ่งใน Expression BLUE !== null
จะเป็นจริงถ้าหากค่าคงนี้ถูกกำหนด
Welcome to MARCUSCODE.
Next year is 2017.
BLUE constant is defined.
นี่เป็นผลลัพธ์ของโปรแกรมในการใช้งานค่าคงที่กับการแสดงผลลัพธ์ของค่าคงที่ และการตรวจสอบการมีอยู่ของค่าคงที่ คุณจะได้เรียนรู้เกี่ยวกับคำสั่งเลือกเงื่อนไขในภายหลังของบทเรียนนี้
การประกาศค่าคงที่ด้วยคำสั่ง Const
นอกจากนี้ในภาษา PHP คุณยังสามารถใช้คำสั่ง Const
ในการประกาศค่าคงที่ได้ ซึ่งมันมีข้อแตกต่างจากการใช้ฟังก์ชัน define()
ดังนี้
- Const จะทำการกำหนดค่าคงที่ในเวลา Run-time ในขณะที่ define() กำหนดค่าคงที่ใน Compile
- Const ไม่สามารถใช้ในบล็อคของคำสั่ง เช่น If For หรือ While เป็นต้น
- Const สามารถกำหนดค่า Literal เท่านั้น ในขณะที่ define() สามารถเป็น Expression ใดๆ
- Const จะเป็นแบบ case-sensitive ในขณะที่ define() สามารถกำหนดเป็น case-insensitive ได้
- Const สามารถกำหนดค่าแบบอาเรย์ได้ ในขณะที่ define() ไม่สามารถทำได้
- Const สามารถใช้ประกาศเป็นค่าคงที่ภายในคลาสหรือ Interface ได้
ต่อไปมาดูตัวอย่างการประกาศและใช้งานค่าคงที่ด้วยคำสั่ง Const
ในภาษา PHP กับโปรแกรมในการหาข้อมูลเกี่ยวกับวงกลม
<?php
const PI = 3.14;
const UNIT = "Inch";
$r = 5.6;
$diameter = 2 * $r;
$area = PI * pow($r, 2);
$circumference = 2 * PI * $r;
$volume = (4 / 3) * PI * pow($r, 3);
$surface_area = 4 * PI * pow($r, 2);
echo "Circle with radius $r " . UNIT . " has\n";
echo "Diameter = $diameter " . UNIT . "\n";
echo "Area = $area Square " . UNIT . "\n";
echo "Circumference = $circumference " . UNIT . "\n";
echo "Volume = $volume Cube " . UNIT . "\n";
echo "Surface area = $surface_area Square " . UNIT . "\n";
?>
ในโปรแกรมเรามีค่าคงที่สองตัวคือ PI
และ UNIT
ซึ่งเป็นหน่วยของความยาวในการวัดระยะ ขนาดและปริมาตรของวงกลม ซึ่งเราได้คำนวณค่าต่างๆ ของวงกลมจากสูตรโดยการทราบรัศมีของวงกลมในตัวแปร $r
Circle with radius 5.6 Inch has
Diameter = 11.2 Inch
Area = 98.4704 Square Inch
Circumference = 35.168 Inch
Volume = 735.24565333333 Cube Inch
Surface area = 393.8816 Square Inch
และนี่เป็นผลลัพธ์ของโปรแกรม ซึ่งคุณจะเห็นว่าค่าคงที่นั้นมีประโยชน์ในการลดความซ้ำซ้อนของข้อมูล เราใช้ PI
แทนค่าของ 3.14
และใช้ UNIT
แทนหน่วย ซึ่งเราสามารถเปลี่ยนแปลงค่าเหล่านี้ได้ทั้งหมดเพียงแค่เปลี่ยนจากค่าคงที่
ในการใช้งานค่าคงที่นั้นเป็นสิ่งที่สำคัญ เช่นในการเขียนโปรแกรมที่คุณต้องใช้ค่าเดิม แทนที่จะแทนที่ค่านั้นลงไปโดยตรง เรากำหนดไว้ในค่าคงที่แทน นี่จะช่วยให้คุณสามารถแก้ไขค่าเหล่านี้ได้ง่ายในภายหลัง ยกตัวอย่างเช่นในตัวอย่างข้างบน ถ้าคุณไม่ใช้ค่าคงที่ PI
คุณจะต้องแทนที่ค่า 3.14 ทุกๆ ที่ในโปรแกรม และค่าคงที่ UNIT
ก็เช่นกัน การใช้ค่าคงที่ที่เหมาะสมจะช่วยให้โค้ดของคุณเข้าใจง่ายและเป็นระบบมากขึ้น
ค่าคงที่ในภาษา PHP
ในภาษา PHP มีค่าคงที่ที่เรียกว่า Predefined constant ซึ่งเป็นค่าคงที่ของภาษาที่เกิดขึ้นในขณะที่โปรแกรมทำงาน นั่นหมายความว่าค่าคงที่เหล่านี้จะถูกกำหนดในตอนที่ Interpreter ทำงานเสร็จสิ้น และแต่ละตัวจะให้ผลลัพธ์ที่แตกต่างกันไปในการรันโปรแกรม ต่อไปนี้เป็นรายการของ Predefined constant ในภาษา PHP
Constant | Description |
---|---|
__CLASS__ | ชื่อของคลาสปัจจุบันที่โปรแกรมทำงานอยู่ |
__DIR__ | ชื่อของโฟล์เดอร์ปัจจุบันที่ไฟล์โปรแกรมทำงานอยู่ |
__FILE__ | ชื่อของไฟล์โปรแกรมทำงานอยู่ |
__FUNCTION__ | ชื่อของฟังก์ชันที่โปรแกรมทำงานอยู่ |
__LINE__ | หมายเลขบรรทัดที่โปรแกรมทำงานอยู่ |
__METHOD__ | ชื่อของเมธอดที่โปรแกรมทำงานอยู่ |
__NAMESPACE__ | ชื่อของเนมสเปซที่โปรแกรมทำงานอยู่ |
__TRAIT__ |
นี่เป็นตัวอย่างในการแสดงผลโฟลเดอร์ ชื่อไฟล์ และบรรทัดของการทำงานปัจจุบันตามลำดับ
<?php
echo __DIR__ . "\n";
echo __FILE__ . "\n";
echo __LINE__ . "\n";
?>
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับค่าคงที่ การประกาศและการใช้งานค่าคงที่แบบสร้างเองโดยผู้ใช้โดยการใช้ฟังก์ชัน define() และใช้คำสั่ง const และได้รู้จักกับ Predefined constant ซึ่งเป็นค่าคงที่ที่ถูกกำหนดในตอนที่ Interpreter ทำงานเสร็จสิ้น ในภาษา PHP