PHP คือภาษาที่ใช้เขียนโปรแกรม(programming language) ใช้สำหรับพัฒนา Web Application โดยเน้นที่ความง่ายในการเขียน เราสามารถสร้าง Web Application ได้ด้วย Syntax ที่อ่านง่ายมากๆ ในอดีตถือว่า PHP เป็นทางเลือกอันดับ 1 แต่เนื่องจาก ปัจจุบันมีภาษาให้เราเลือกเยอะมากขึ้น ทำให้ PHP อาจยังไม่ใช่ทางเลือกที่เป็นอันดับ 1 อีกต่อไป
ก่อนจะเริ่มเขียน PHP เราลองมาดูกันว่า PHP มีข้อดีและข้อเสียที่แตกต่างจากภาษาอื่นๆยังไง และทำไมเราถึงต้องเลือก PHP
ข้อดีของ PHP
- PHP เป็นภาษาที่สามารถเริ่มต้นได้ง่าย เขียนง่าย
- โครงสร้างของภาษาไม่ซับซ้อน
- มีฟังก์ชั่นและ library ให้เลือกใช้งานเยอะมากๆ
- สามารถนำไป run ได้หลาย platform เช่น Apache, Nginx
ข้อเสียของ PHP
- ประมวลผลได้ช้ากว่าภาษาสมัยใหม่อย่าง Go หรือ Rust
- Syntax ที่ไม่ได้บังคับให้เขียนให้ถูกต้อง พอมี syntax ใหม่ๆออกมาก็ไม่ได้บังคับว่าต้องเขียนแบบใหม่เท่านั้นเลยทำให้ คนเลือกเขียนแบบเก่าๆไปเรื่อยๆ ซึ่งจะมีผลเรื่องความปลอดภัยของ Application
- ไม่ค่อย error เลยทำให้เกิด bug หรือช่องโหว่ได้ง่ายกว่า
- ถ้า Application ที่มีความซับซ้อนจะทำให้ code ของ PHP ในหน้า HTML นั้นเยอะเกินไปจนแก้ไม่ได้
เริ่มต้นหัดเขียน PHP
ก่อนที่จะทำความรู้จักกับ php ขออธิบายสิ่งที่ต้องเข้าใจก่อนเริ่มต้นเขียน PHP โดยที่คุณจะต้องแยกสิ่งเหล่านี้ให้ออกก่อน เริ่มต้นจาก
HTML
เป็นส่วนที่เป็นพื้นฐานสำคัญของเว็บเพราะเป็นส่วนของ content หรือข้อมูลที่เราแสดงอยู่บนเว็บ
JavaScript
เป็นส่วนที่ทำให้เว็บของเราเป็น Dynamic คือมีการโต้ตอบกับ user ได้ เช่น การลากวาง, การกดปุ่ม, การ pop-up dialog และอื่นๆ
CSS
เป็นส่วนของการจัดการเรื่องของความสวยงามการตกแต่งหน้าตาของเว็บให้ดูดี
Server-Side Script
Server-Side เป็นส่วนของการจัดการที่ฝั่ง Server เมื่อไหร่ก็ตามที่เราต้องการเก็บข้อมูลของ user เราจะเลือกเขียน code ที่ฝั่งนี้ เช่น ถ้าเราเปิดอบรม หรือ สัมนา เราก็ต้องการรู้ว่าคนที่จะเข้างานมีกี่คนและมีใครบ้าง ข้อมูลที่เราต้องเก็บคือ คนที่อยากมาเรียนหรือมาสัมนา เราก็ต้องเขียนแบบฟอร์มเพื่อให้คนที่ต้องการลงทะเบียนกรอกข้อมูลเข้ามา แล้วเก็บลง database เมื่อไหร่ก็ตามที่เราต้องการเก็บข้อมูลลง database เราต้องเขียน Code ฝั่ง Server(Server-Side) เสมอ ส่วนภาษาก็มีให้เลือกใช้มากมายไม่ว่าจะเป็น PHP, ASP.net, NodeJS, Python และอื่นๆ
Scripting Language
ภาษา PHP อยู่ในกลุ่มของ scripting language ซึ่งลักษณะเฉพาะของการเป็น scripting language คือ
- Run ตอนที่มี request เข้ามา หรือตอบสนองต่อเหตุการณ์บางอย่าง
- จะ run คำสั่งทีละบรรทัดตั้งแต่บรรทัดแรกลงไปถึงบรรทัดสุดท้าย ถ้าบรรทัดไหน error ก็จะหยุดการทำงานตรงนั้น
- ไม่จำเป็นต้องมีคนเข้ามา interact กับระบบ(เราเลยต้องมี HTML และ JavaScript สำหรับจัดการกับ user interaction)
บางทีเราจะเรียก PHP ว่าเป็น Server-Side Scripting Language
ขั้นตอนการทำงานของ PHP
- Browser ส่ง request ขึ้นมาที่ web server ซึ่งอาจเป็น Apache หรือ Nginx ก็ได้
- Apache ค้นหาว่ามีไฟล์ที่เราส่งเข้ามาหรือไม่ ในกรณีนี้เราต้องการ run hello.php
- Apache จะเรียก php runtime ขึ้นมาแปล hello.php ทีละบรรทัด(php เป็น interpreter)
- ถ้าเราเขียน code เพื่ิอติดต่อกับ database php ก็จะไปดึงข้อมูลหรือใส่ข้อมูลลงใน database
- หลังจากนั้น php จะ render HTML ออกมาและส่งผลลัพธ์กลับไปยัง browser เพื่อแสดงผลต่อไป
PHP syntax
หลังจากที่เราเข้าใจการทำงานของ PHP แล้ว ทีนี้เราก็ลองมาดูกันว่า PHP มีวิธีการเขียนยังไงบ้าง
- PHP สามารถเขียนในส่วนไหนของ HTML Document ก็ได้ หรือจะไม่มี HTML เลยก็ได้
- ไฟล์ที่สร้างขึ้นต้องมีนามสกุลเป็น .php
- Script เริ่มต้นด้วย <? php และจบด้วย ?>
<?php
ใส่คำสั่งของ PHP ลงในส่วนนี้
?>
เราสามารถเขียน PHP แบบไม่มี HTML แบบนี้
<?php
echo "ข้อความที่ต้องการแสดงผล";
?>
หรือจะเขียน PHP ฝังลงไปใน HTML แบบนี้ก็ได้่
<!DOCTYPE html>
<html>
<body>
<?php
echo "My first PHP script!";
?>
</body>
</html>
ผลลัพธ์จะออกมาเป็น
"My first PHP script!"
ข้อควรระวัง พยายามอย่าเอา code php ไปรวมกับ html เพราะจะทำให้แก้ยาก
การใช้คำสั่ง Echo และ Print
การแสดงผลลัพธ์ออกทางหน้าจอใน PHP จะมีอยู่ 2 คำสั่งด้วยกันคือ echo และ print โดยการทำงานของ echo และ print นั้นจะแตกต่างกัน ดังนี้
- print จะ return ค่า 1 กลับมา แต่ echo จะไม่ return ค่าใดๆกลับมา
- print มี argument หรือ parameter ได้เพียงตัวเดียวเท่านั้น แต่ echo มีได้หลายตัว
- ที่สำคัญที่สุดคือ echo เร็วกว่า print ดังนั้นส่วนใหญ่แล้วแนะนำให้ใช้ echo
PHP echo Statement
echo สามารถใช้โดยไม่ต้องใส่วงเล็บก็ได้
echo "<h2>PHP is fun!</h2>";
echo "Hello world!<br>";
echo "I'm about to learn PHP!<br>";
// echo สามารถใส่ parameter ได้มากกว่า 1 ตัว
echo "This", " string", " was", " made", " with multiple parameters.";
การใช้ echo แสดงผลตัวแปร
$txt1 = "Learn PHP";
$txt2 = "W3Schools.com";
$cars = array("Volvo", "BMW", "Toyota");
echo $txt1 . "<br>";
echo "Study PHP at " . $txt2 . "<br>";
echo "My car is a " . $cars[0];
และตัวอย่างสุดท้ายการใช้งาน print แสดงผลตัวแปร
$txt1 = "Learn PHP";
$txt2 = "W3Schools.com";
$cars = array("Volvo", "BMW", "Toyota");
print $txt1 . "<br>";
print "Study PHP at " . $txt2 . "<br>";
print "My car is a " . $cars[0];
การใส่ Comment ใน PHP
Comment คือส่วนที่ Complier หรือ Interpreter ไม่นำไปประมวลผล แปลเป็นไทยง่ายๆคือส่วนนี้จะไม่นำไปใช้งานนั่นเอง
แล้ว comment จะมีไว้ทำไม? คำตอบคือ เอาไว้อธิบายการทำงานของ source code เพราะหลังจากที่เราไปทำ project อื่นหรือคนอื่นที่จะมาแก้ไข code เราเค้าต้องใช้ comment เพื่อทำความเข้าใจ source code
เวลาเขียน comment ให้พยายามอธิบายว่าทำไมเราถึงต้องเขียนแบบนี้(Why) อย่าพยายามเขียนอธิบายการทำงานของ code(What)
รูปแบบการเขียน Comment ใน PHP จะประกอบด้วย
Comment บรรทัดเดียว
เฉพาะข้อความที่อยู่หลัง // เท่านั้นที่ถูก comment
<?php
// คำอธิบาย Source Code
// Code หลังจาก เครื่องหมาย // นี้จะไม่ถูกประมวลผล
?>
Comment หลายบรรทัด
comment ทุกบรรทัดที่อยู่ระหว่างเครื่องหมาย /* …. */
<?php
/*
เราสามารถเขียนอธิบายอะไรยาวๆได้ใน block นี้
Code ในส่วนนี้จะไม่ถูกประมวลผล
*/
?>
อย่า comment code ที่ไม่ได้ใช้แล้ว ถ้า code ไหนไม่ใช้แล้วควรจะลบทิ้งไปเลย ถ้ายังเสียดายให้นำไปเก็บไว้ใน gist หรือ wiki แทน
Case-Sensitive
PHP เป็นภาษาที่เรียกว่า Case-Sensitive หมายความว่า ตัวอักษร A และ a มีความหมายต่างกัน เพราะฉะนั้นคนที่เริ่มต้นเขียนต้องระวังเรื่องของความถูกต้องของตัวอักษรด้วย
<!DOCTYPE html>
<html>
<body>
<?php
$color = "red";
echo "My car is " . $color . "<br>";
echo "My house is " . $COLOR . "<br>";
echo "My boat is " . $coLOR . "<br>";
?>
</body>
</html>
ผลลัพธ์จะออกมาเป็นแบบนี้
My car is red
My house is
My boat is
ในตัวอย่างนี้เราจะได้ผลลัพธ์เพียงแค่บรรทัดแรกเท่านั้นเนื่องจาก $color เป็นตัวเล็กทั้งหมด แต่ใน Code บรรทัดที่ 8 ใช้ $COLOR ที่เป็นตัวใหญ่ทั้งหมด รวมทั้ง $coLOR ในบรรทัดที่ 9 จะไม่ได้แสดงผลลัพธ์ออกมาเนื่องจากเป็นคนละตัวแปร และเรายังไม่ได้กำหนดค่าให้กับตัวแปร $coLOR และ $COLOR