ค่าคงที่

18 December 2016

ค่าคงที่ (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

ConstantDescription
__CLASS__ชื่อของคลาสปัจจุบันที่โปรแกรมทำงานอยู่
__DIR__ชื่อของโฟล์เดอร์ปัจจุบันที่ไฟล์โปรแกรมทำงานอยู่
__FILE__ชื่อของไฟล์โปรแกรมทำงานอยู่
__FUNCTION__ชื่อของฟังก์ชันที่โปรแกรมทำงานอยู่
__LINE__หมายเลขบรรทัดที่โปรแกรมทำงานอยู่
__METHOD__ชื่อของเมธอดที่โปรแกรมทำงานอยู่
__NAMESPACE__ชื่อของเนมสเปซที่โปรแกรมทำงานอยู่
__TRAIT__

นี่เป็นตัวอย่างในการแสดงผลโฟลเดอร์ ชื่อไฟล์ และบรรทัดของการทำงานปัจจุบันตามลำดับ

<?php

echo __DIR__ . "\n";
echo __FILE__ . "\n";
echo __LINE__ . "\n";

?>

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับค่าคงที่ การประกาศและการใช้งานค่าคงที่แบบสร้างเองโดยผู้ใช้โดยการใช้ฟังก์ชัน define() และใช้คำสั่ง const และได้รู้จักกับ Predefined constant ซึ่งเป็นค่าคงที่ที่ถูกกำหนดในตอนที่ Interpreter ทำงานเสร็จสิ้น ในภาษา PHP

บทความนี้เป็นประโยชน์หรือไม่?Yes·No