🟣 PHP

เทคนิคจัดการ String ใน PHP 8 ให้โค้ดสะอาดและอ่านง่ายขึ้น

5 นาที 18 views บันทึกเป็น PDF
เทคนิคจัดการ String ใน PHP 8 ให้โค้ดสะอาดและอ่านง่ายขึ้น

เรียนรู้วิธีจัดการข้อความใน PHP 8 ด้วย String Interpolation, Heredoc/Nowdoc และฟังก์ชันใหม่ที่ช่วยให้การเขียนโค้ดของมือใหม่ดูเป็นมืออาชีพมากขึ้น

ทำความรู้จัก String Interpolation การใส่ตัวแปรลงในข้อความ

ในภาษา PHP การจัดการกับข้อความหรือที่เรียกว่า String (ชุดของตัวอักษร) เป็นสิ่งที่โปรแกรมเมอร์ต้องทำแทบทุกวัน บ่อยครั้งที่เราต้องการนำค่าจากตัวแปรไปแทรกไว้กลางประโยค ซึ่งวิธีแบบดั้งเดิมคือการใช้เครื่องหมายจุด (.) เชื่อมข้อความเข้าด้วยกัน แต่วิธีนี้มักจะทำให้โค้ดอ่านยากและดูรกสายตา

String Interpolation คือเทคนิคการแทรกตัวแปรลงไปใน Double Quotes (เครื่องหมายคำพูดคู่ ") ได้โดยตรงโดยไม่ต้องใช้เครื่องหมายเชื่อม ช่วยให้โค้ดสะอาดขึ้นเหมือนการเขียนประโยคปกติ เปรียบเสมือนการจ่าหน้าซองจดหมายที่มีช่องว่างให้เราเติมชื่อผู้รับลงไปได้ทันทีครับ

// แบบเดิม: ใช้จุดเชื่อม
$name = "น้องใหม่";
echo "สวัสดีคุณ " . $name . " ยินดีต้อนรับครับ";

// แบบใหม่: ใช้ String Interpolation
echo "สวัสดีคุณ {$name} ยินดีต้อนรับครับ"; 
// ผลลัพธ์: สวัสดีคุณ น้องใหม่ ยินดีต้อนรับครับ

ข้อควรระวังสำหรับมือใหม่คือ Interpolation จะทำงานได้เฉพาะกับ Double Quotes (") เท่านั้น หากคุณใช้ Single Quotes (') PHP จะมองว่าสิ่งที่คุณเขียนคือข้อความธรรมดา ไม่ใช่ตัวแปร และจะแสดงผลชื่อตัวแปรออกมาแทนที่จะเป็นค่าข้างในครับ

Heredoc และ Nowdoc ทางเลือกในการจัดการข้อความหลายบรรทัด

เมื่อเราต้องเขียนข้อความยาวๆ เช่น เนื้อหาอีเมล หรือโค้ด HTML การใช้เครื่องหมายคำพูดปกติจะทำให้เกิดความยุ่งยากเพราะต้องคอยใส่ตัวอักษรพิเศษเพื่อขึ้นบรรทัดใหม่ Heredoc และ Nowdoc จึงถูกออกแบบมาเพื่อแก้ปัญหานี้โดยเฉพาะ ทำให้เราสามารถพิมพ์ข้อความกี่บรรทัดก็ได้ตามต้องการ

เปรียบเทียบง่ายๆ Heredoc เหมือนกับ Double Quotes ที่ยอมให้เราใส่ตัวแปรลงไปได้ ส่วน Nowdoc เหมือนกับ Single Quotes ที่มองทุกอย่างเป็นข้อความดิบ (Raw String) ไม่มีการประมวลผลตัวแปร เหมาะสำหรับกรณีที่เราต้องการแสดงผลโค้ดตัวอย่างโดยไม่ต้องการให้ PHP พยายามตีความเครื่องหมายสัญลักษณ์ครับ

// Heredoc: รองรับตัวแปร
$user = "Admin";
$message = <<<EOT
สวัสดีคุณ $user,
นี่คือข้อความหลายบรรทัด
ที่เขียนได้ง่ายและเป็นระเบียบ!
EOT;

// Nowdoc: ไม่รองรับตัวแปร (ใช้ quote รอบตัวระบุจุดจบ)
$raw = <<<'EOD'
ข้อความนี้จะแสดงผลตัวแปร $user 
ออกมาเป็นตัวอักษรตรงๆ ไม่มีการแทนค่า
EOD;

จุดที่มือใหม่มักพลาดคือการเว้นวรรคหลังตัวระบุจุดจบ (เช่น EOT) หรือการวางตัวระบุจุดจบไม่ชิดขอบซ้ายสุดของไฟล์ ซึ่งจะทำให้ PHP หาจุดสิ้นสุดของข้อความไม่เจอและเกิดข้อผิดพลาด Syntax Error ขึ้นมาทันทีครับ

ฟังก์ชัน String ใหม่ใน PHP 8 ที่โปรแกรมเมอร์ต้องใช้

การค้นหาข้อความภายในชุดข้อมูลเป็นงานพื้นฐานของนักพัฒนา เช่น การตรวจสอบว่าอีเมลมีเครื่องหมาย @ หรือไม่ ใน PHP 8 ได้มีการเพิ่มฟังก์ชัน str_contains, str_starts_with และ str_ends_with เข้ามา ซึ่งช่วยให้ชีวิตเราง่ายขึ้นกว่าเดิมมาก

ก่อนหน้านี้เราต้องใช้ฟังก์ชันเก่าอย่าง strpos() ซึ่งมักจะสับสนเรื่องการคืนค่าตำแหน่งตัวเลข (0 หรือ false) แต่ฟังก์ชันใหม่เหล่านี้จะคืนค่าเป็น Boolean (จริง/เท็จ) โดยตรง ทำให้โค้ดของเราอ่านง่ายและลดโอกาสเกิดบั๊ก (ข้อผิดพลาดในโปรแกรม) ได้มหาศาลครับ

$email = "dev@example.com";

// ตรวจสอบว่ามีคำว่า @ หรือไม่
if (str_contains($email, '@')) {
    echo "เป็นอีเมลที่ถูกต้อง";
}

// ตรวจสอบว่าขึ้นต้นด้วยคำว่า dev หรือไม่
if (str_starts_with($email, 'dev')) {
    echo "เป็นบัญชีนักพัฒนา";
}

ฟังก์ชันเหล่านี้ถือเป็น Best Practice ในการเขียน PHP ยุคใหม่ หากคุณกำลังฝึกเขียนโปรแกรม แนะนำให้เลิกใช้ strpos() ในกรณีที่แค่ต้องการเช็คว่ามีข้อความอยู่หรือไม่ แล้วหันมาใช้ฟังก์ชันกลุ่มนี้แทนครับ

สรุป: การนำไปใช้ในโปรเจกต์จริง

การเรียนรู้เครื่องมือเหล่านี้ไม่ได้เป็นแค่เรื่องของความสะดวก แต่เป็นเรื่องของ Code Readability (การทำให้อ่านโค้ดง่าย) ซึ่งสำคัญมากเมื่อคุณต้องทำงานร่วมกับคนอื่นในทีมโปรแกรมเมอร์ โค้ดที่สะอาดจะช่วยให้คุณและเพื่อนร่วมงานหาจุดที่ต้องแก้ไขได้เร็วขึ้นเมื่อเจอปัญหา

ลองนำไปประยุกต์ใช้ในโปรเจกต์ของคุณ เช่น การสร้างระบบส่งข้อความแจ้งเตือน (Notification) โดยใช้ Heredoc เพื่อเขียนเทมเพลตอีเมลให้สวยงาม และใช้ str_contains เพื่อคัดกรองข้อมูลผู้ใช้งานที่กรอกเข้ามาให้ถูกต้องก่อนบันทึกลงฐานข้อมูล

  1. เปลี่ยนการเชื่อมข้อความด้วยจุด (.) เป็น String Interpolation ในส่วนที่มีตัวแปรน้อย
  2. ใช้ Heredoc เมื่อต้องเก็บข้อความที่มีความยาวมากกว่า 2 บรรทัดขึ้นไป
  3. ปรับฟังก์ชันเช็คข้อความเดิมๆ มาเป็น str_contains เพื่อให้โค้ดดูเป็นมืออาชีพและเข้าใจง่าย

จำไว้ว่าโปรแกรมเมอร์ที่เก่งไม่ได้วัดกันที่จำนวนโค้ดที่เขียน แต่ดูที่ความเรียบง่ายและประสิทธิภาพของโค้ดที่ผู้อื่นสามารถนำไปพัฒนาต่อได้ครับ

แชร์บทความ

Facebook X LINE

บทความที่เกี่ยวข้อง

สร้างระบบ Authentication ด้วย PHP 8: สอนทำระบบ Login และ Hash รหัสผ่านให้ปลอดภัย
PHP

สร้างระบบ Authentication ด้วย PHP 8: สอนทำระบบ Login และ Hash รหัสผ่านให้ปลอดภัย

เรียนรู้วิธีสร้างระบบ Authentication ด้วย PHP 8 ตั้งแต่การสมัครสมาชิก การ Hash รหัสผ่านด้วย password_hash ไปจนถึงการทำระบบ Login และ Protected Dashboard

1 month ago 7 นาที
21 views
สอน PHP 8 จัดการฐานข้อมูล CRUD: วิธี UPDATE และ DELETE ข้อมูลอย่างปลอดภัยด้วย Bind Parameters
PHP

สอน PHP 8 จัดการฐานข้อมูล CRUD: วิธี UPDATE และ DELETE ข้อมูลอย่างปลอดภัยด้วย Bind Parameters

เรียนรู้วิธีแก้ไขและลบข้อมูลในฐานข้อมูลด้วย PHP 8 และ PDO พร้อมเทคนิคการใช้ Bind Parameters เพื่อป้องกัน SQL Injection สำหรับมือใหม่หัดเขียนเว็บ

1 month ago 6 นาที
20 views
สอนเขียน PHP 8 เชื่อมต่อฐานข้อมูลด้วย PDO ทำ CRUD อย่างปลอดภัย ป้องกัน SQL Injection
PHP

สอนเขียน PHP 8 เชื่อมต่อฐานข้อมูลด้วย PDO ทำ CRUD อย่างปลอดภัย ป้องกัน SQL Injection

เรียนรู้วิธีจัดการฐานข้อมูลด้วย PHP 8 ผ่าน PDO อย่างมืออาชีพ พร้อมเทคนิคการใช้ Prepared Statements เพื่อป้องกัน SQL Injection สำหรับมือใหม่หัดเขียนเว็บ

1 month ago 7 นาที
21 views