PHP คืออะไร ประวัติความเป็นมา และหลักการทำงาน (บทเรียนตอนที่ 1)
บทเรียนชุดนี้แบ่งเป็น 3 ตอน ออกแบบมาให้อ่านต่อกันเป็นลำดับ ตอนนี้เป็นตอนแรก ว่าด้วยความเข้าใจพื้นฐานก่อนลงมือเขียนโค้ด
สิ่งที่จะได้จากตอนนี้ รู้ว่า PHP คืออะไร มาจากไหน ทำงานอย่างไร และต่างจากภาษาฝั่งผู้ใช้อย่าง JavaScript ตรงไหน
1. PHP คืออะไร
PHP เป็นภาษาโปรแกรมที่ทำงานฝั่งเซิร์ฟเวอร์ ใช้สร้างหน้าเว็บที่เนื้อหาเปลี่ยนแปลงได้ตามข้อมูลหรือตามผู้ใช้แต่ละคน
1.1 ความหมายของชื่อ
- เดิมย่อมาจาก Personal Home Page
- ปัจจุบันย่อมาจาก PHP: Hypertext Preprocessor
- เป็นชื่อย่อแบบเรียกตัวเอง ซึ่งพบได้ทั่วไปในวงการซอฟต์แวร์
1.2 ลักษณะสำคัญ
- เป็นภาษาแบบแปลคำสั่งขณะทำงาน ไม่ต้องคอมไพล์เป็นไฟล์โปรแกรมก่อน
- ฝังในหน้า HTML ได้โดยตรง จึงเรียนรู้ได้ง่ายสำหรับคนที่รู้ HTML อยู่แล้ว
- เป็นซอฟต์แวร์เสรี ใช้งานได้ฟรีทั้งเชิงส่วนตัวและเชิงพาณิชย์
- ทำงานได้บนระบบปฏิบัติการหลักทุกตัว
2. ประวัติความเป็นมา
2.1 จุดกำเนิด ปี 1994
Rasmus Lerdorf โปรแกรมเมอร์ชาวเดนมาร์ก-แคนาดา เขียนชุดเครื่องมือเล็ก ๆ ขึ้นมาเพื่อนับจำนวนผู้เข้าชมประวัติส่วนตัวของตัวเอง เรียกว่า Personal Home Page Tools
เขาเผยแพร่ให้คนอื่นใช้ในปี 1995 และมีผู้นำไปใช้มากขึ้นเรื่อย ๆ
2.2 การเขียนใหม่ทั้งหมด ปี 1997
Andi Gutmans และ Zeev Suraski นักศึกษาชาวอิสราเอล เขียนตัวแปลภาษาขึ้นใหม่ทั้งหมด กลายเป็น PHP 3 ซึ่งเป็นรุ่นที่ทำให้ PHP แพร่หลายอย่างแท้จริง
ทั้งสองก่อตั้งบริษัท Zend และพัฒนาเครื่องยนต์ประมวลผลชื่อ Zend Engine ซึ่งเป็นแกนหลักของ PHP มาจนถึงปัจจุบัน
2.3 พัฒนาการแต่ละรุ่นที่ควรรู้
| รุ่น | ปี | สิ่งที่เพิ่มเข้ามาและมีผลมาถึงทุกวันนี้ |
|---|---|---|
| PHP 3 | 1998 | เขียนใหม่ทั้งหมด เริ่มได้รับความนิยมจริง |
| PHP 4 | 2000 | ใช้ Zend Engine ทำงานเร็วขึ้นมาก |
| PHP 5 | 2004 | รองรับการเขียนโปรแกรมเชิงวัตถุอย่างสมบูรณ์ และมี PDO สำหรับเชื่อมฐานข้อมูล |
| PHP 7 | 2015 | เร็วขึ้นราวสองเท่า ใช้หน่วยความจำน้อยลง ระบุชนิดข้อมูลได้ |
| PHP 8 | 2020 | มีตัวคอมไพล์ขณะทำงาน (JIT) และไวยากรณ์ที่กระชับขึ้นหลายอย่าง |
ข้อสังเกตสำหรับผู้เรียน โค้ดตัวอย่างเก่า ๆ บนอินเทอร์เน็ตจำนวนมากเขียนด้วยรูปแบบของ PHP 5 ซึ่งบางคำสั่งถูกยกเลิกไปแล้ว ควรตรวจสอบปีที่เผยแพร่ทุกครั้ง
3. หลักการทำงาน
3.1 ต่างจาก JavaScript อย่างไร
นี่คือจุดที่ผู้เริ่มต้นสับสนมากที่สุด
| หัวข้อ | PHP | JavaScript (ฝั่งผู้ใช้) |
|---|---|---|
| ทำงานที่ไหน | บนเซิร์ฟเวอร์ | บนเครื่องผู้ใช้ |
| ผู้ใช้เห็นโค้ดไหม | ไม่เห็น เห็นแต่ผลลัพธ์ | เห็นทั้งหมด |
| เข้าถึงฐานข้อมูล | ได้โดยตรง | ไม่ได้ ต้องผ่านเซิร์ฟเวอร์ |
| เก็บความลับได้ไหม | ได้ เช่น รหัสฐานข้อมูล | ไม่ได้เลย |
3.2 ลำดับการทำงานเมื่อผู้ใช้เปิดหน้าเว็บ
- ผู้ใช้ขอเปิดไฟล์ที่ลงท้ายด้วย
.php - เว็บเซิร์ฟเวอร์ส่งไฟล์นั้นให้ตัวแปลภาษา PHP
- PHP ประมวลผลคำสั่ง เช่น ดึงข้อมูลจากฐานข้อมูล
- PHP สร้างผลลัพธ์ออกมาเป็น HTML ธรรมดา
- เซิร์ฟเวอร์ส่ง HTML นั้นกลับไปให้เบราว์เซอร์
ข้อสรุปสำคัญ เบราว์เซอร์ไม่เคยเห็นโค้ด PHP เลย เห็นแต่ HTML ที่ PHP สร้างเสร็จแล้ว
3.3 ตัวอย่างแรกสุด
<?php
$name = "นักเรียน";
$hour = (int) date('H');
?>
<h1>สวัสดี <?= $name ?></h1>
<?php if ($hour < 12): ?>
<p>อรุณสวัสดิ์</p>
<?php else: ?>
<p>สวัสดีตอนบ่าย</p>
<?php endif; ?>
สิ่งที่ควรสังเกต
- โค้ด PHP อยู่ระหว่าง
<?phpกับ?> <?= ... ?>เป็นรูปแบบย่อของการสั่งแสดงผล- ทุกคำสั่งจบด้วยเครื่องหมาย
; - ชื่อตัวแปรขึ้นต้นด้วย
$เสมอ
4. เครื่องมือที่ต้องเตรียม
4.1 ชุดโปรแกรมจำลองเซิร์ฟเวอร์
เนื่องจาก PHP ทำงานบนเซิร์ฟเวอร์ จึงต้องติดตั้งเซิร์ฟเวอร์จำลองบนเครื่องตัวเองก่อน ที่นิยมคือ XAMPP ซึ่งรวมสามอย่างไว้ด้วยกัน
- Apache ทำหน้าที่เป็นเว็บเซิร์ฟเวอร์
- PHP ตัวแปลภาษา
- MariaDB หรือ MySQL ระบบฐานข้อมูล
4.2 โปรแกรมเขียนโค้ด
แนะนำ Visual Studio Code ซึ่งใช้งานได้ฟรีและมีส่วนเสริมสำหรับ PHP จำนวนมาก
4.3 ข้อควรระวังสำหรับผู้เริ่มต้น
- ไฟล์
.phpต้องวางในโฟลเดอร์ของเซิร์ฟเวอร์เท่านั้น (ของ XAMPP คือhtdocs) - ต้องเปิดผ่าน
http://localhost/ไม่ใช่ดับเบิลคลิกเปิดไฟล์ตรง ๆ - ถ้าเปิดแล้วเห็นโค้ดแทนผลลัพธ์ แปลว่าเปิดผิดวิธี ไม่ได้ผ่านเซิร์ฟเวอร์
สรุปสาระสำคัญ
สรุปเป็นแผนผังความคิดได้ตามนี้
- PHP คืออะไร
- ภาษาฝั่งเซิร์ฟเวอร์
- ฝังใน HTML ได้
- ซอฟต์แวร์เสรี
- ประวัติ
- 1994 Rasmus Lerdorf สร้างขึ้นใช้ส่วนตัว
- 1997 Gutmans และ Suraski เขียนใหม่ เกิด Zend Engine
- PHP 5 เพิ่มเชิงวัตถุและ PDO
- PHP 7 เร็วขึ้นสองเท่า
- PHP 8 มี JIT
- หลักการทำงาน
- ประมวลผลที่เซิร์ฟเวอร์ ส่งกลับเป็น HTML
- ผู้ใช้ไม่เห็นโค้ดต้นฉบับ
- ต่างจาก JavaScript ที่ทำงานบนเครื่องผู้ใช้
- เครื่องมือ
- XAMPP ประกอบด้วย Apache, PHP, ฐานข้อมูล
- เปิดผ่าน localhost เท่านั้น
ตอนต่อไป ไวยากรณ์พื้นฐานของ PHP ตัวแปร ชนิดข้อมูล เงื่อนไข การวนซ้ำ และฟังก์ชัน