สรุป Timeline วิวัฒนาการภาษา PHP ตั้งแต่ version 1 จนถึงปัจจุบัน
PHP 1 (1995)
ชื่อเดิม: Personal Home Page Tools
- ผู้สร้าง: Rasmus Lerdorf
- จุดประสงค์:
- ใช้ทำเว็บส่วนตัว
- track ผู้เข้าชม (counter)
- อ่านฟอร์ม
- ยังไม่ถือเป็นภาษาโปรแกรมเต็มรูปแบบ
- เป็นชุดของ CGI script ที่เขียนด้วย C
- ไม่มี class
- ไม่มี function ให้ผู้ใช้เขียนเอง
- Logic ถูกฝังอยู่ใน HTML โดยตรง
ลักษณะการใช้งาน:
- ใช้ tag พิเศษแทรกใน HTML
- ทำงานแบบ interpret ทุกครั้งที่เรียกหน้าเว็บ
ภาพรวม:
PHP 1 คือ “เครื่องมือ” ไม่ใช่ภาษา
PHP 2 (1997)
ชื่อ: PHP/FI (Personal Home Page / Forms Interpreter)
- เริ่มมี syntax ใกล้เคียง PHP ที่คุ้นเคย
- เพิ่ม:
- Variables
- Control structures (if, while)
- Basic function
- รองรับ database แรกๆ (mSQL, MySQL รุ่นบุกเบิก)
- ยังเป็น procedural ล้วน
- ยังไม่มี OOP
- โค้ดเริ่มแยก logic ออกจาก HTML ได้บ้าง
ภาพรวม:
PHP 2 เริ่มเป็น “ภาษา scripting” สำหรับเว็บ
PHP 3 (1998)
เปลี่ยนชื่อเป็น: PHP: Hypertext Preprocessor (recursive acronym)
- เขียนใหม่เกือบทั้งหมดโดย
- Andi Gutmans
- Zeev Suraski
- วางสถาปัตยกรรมที่เป็นฐานของ PHP ยาวนาน
- รองรับ extension system
- Syntax ใกล้ PHP ปัจจุบันมาก
- รองรับ database หลากหลาย
- เริ่มมี object model แบบพื้นฐาน (ยังไม่ใช่ OOP เต็ม)
- ประสิทธิภาพและเสถียรภาพดีขึ้นมาก
ภาพรวม:
PHP 3 คือ “PHP ตัวจริงตัวแรก”
ถ้าไม่มี PHP 3 → ไม่มี PHP 4 / Zend EnginePHP 4 (ประมาณปี 2000)
- ใช้ Zend Engine 1
- เป็นภาษา procedural เกือบทั้งหมด
- OOP มีแบบพื้นฐานมาก (class, method) แต่ยังไม่จริงจัง
- ไม่มี visibility (public / private)
- Performance ดีกว่า PHP 3 มาก ทำให้ PHP เริ่มนิยม
- เหมาะกับเว็บแบบสคริปต์ง่ายๆ
ภาพรวม:
PHP ยังเป็น “template engine + script” มากกว่าภาษาโปรแกรมจริงจัง
PHP 4 (ประมาณปี 2000)
- ใช้ Zend Engine 1
- เป็นภาษา procedural เกือบทั้งหมด
- OOP มีแบบพื้นฐานมาก (class, method) แต่ยังไม่จริงจัง
- ไม่มี visibility (public / private)
- Performance ดีกว่า PHP 3 มาก ทำให้ PHP เริ่มนิยม
- เหมาะกับเว็บแบบสคริปต์ง่ายๆ
ภาพรวม:
PHP ยังเป็น “template engine + script” มากกว่าภาษาโปรแกรมจริงจัง
PHP 5.0 – 5.2 (2004–2006)
- Zend Engine 2
- OOP เปลี่ยนครั้งใหญ่
- constructor / destructor
- visibility (public / protected / private)
- abstract class, interface
- exception
- เริ่มเขียนโค้ดเชิงวัตถุได้จริง
- เริ่มมี SPL (Standard PHP Library)
ภาพรวม:
PHP เริ่มเป็น programming language จริงๆ ไม่ใช่แค่ script
PHP 5.3 (2009) – จุดเปลี่ยนใหญ่
- Namespaces (สำคัญมาก)
- Closures / Anonymous function
- Late Static Binding
- Garbage Collection
- PDO ใช้งานแพร่หลายขึ้น
- รองรับ modern framework ได้จริง
ภาพรวม:
เปิดทางให้ Laravel, Symfony, Zend Framework เกิดและเติบโต
PHP 5.4 – 5.6 (2012–2014)
- Short array syntax []
- Traits (แก้ปัญหา multiple inheritance)
- Built-in web server
- Generator (yield)
- Password hashing API
- Performance และ memory ดีขึ้น
ภาพรวม:
PHP ใช้ง่ายขึ้น เขียนสะอาดขึ้น เหมาะกับโปรเจกต์ใหญ่
PHP 7.0 (2015) – เปลี่ยนโลก
- Zend Engine 3
- Performance เร็วขึ้น ~2–3 เท่า
- Memory ใช้น้อยลงมาก
- Scalar type hint (int, string, bool)
- Return type declaration
- Null coalescing operator ??
- Error handling ดีขึ้น (Error → Throwable)
ภาพรวม:
PHP จาก “ช้า” กลายเป็น “เร็วมาก”
หลายระบบ migrate มา PHP 7 เพราะเหตุผลนี้
PHP 7.1 – 7.4 (2016–2019)
- Nullable types ?Type
- Void return type
- Iterable
- Arrow function fn() =>
- Typed properties
- Preload (7.4)
- Deprecate ของเก่าเยอะมาก
ภาพรวม:
PHP เริ่ม “strict” มากขึ้น บังคับเขียนโค้ดดีขึ้น
PHP 8.0 (2020) – เปลี่ยนแนวคิดอีกครั้ง
- JIT (Just-In-Time Compiler)
- Named arguments
- Union types (int|string)
- Attributes (แทน annotation)
- Match expression
- Nullsafe operator ?->
- Error หลายอย่างกลายเป็น TypeError
ภาพรวม:
PHP ขยับเข้าใกล้ภาษาอย่าง Java / C# มากขึ้น
PHP 8.1 (2021)
- Enums
- Readonly properties
- Fibers (รองรับ async framework)
- Intersection types
- Performance ดีขึ้นอีก
ภาพรวม:
PHP พร้อมสำหรับ domain-driven / async / modern architecture
PHP 8.2 (2022)
- Readonly classes
- Disallow dynamic properties (บังคับโค้ดสะอาด)
- Type system เข้มขึ้น
- Deprecate legacy behavior เยอะ
ภาพรวม:
บังคับให้เลิกเขียน PHP แบบ “ตามใจฉัน”
PHP 8.3 (2023)
- Performance optimization ต่อเนื่อง
- JSON / Date / String APIs ดีขึ้น
- Typed class constants
- Minor syntax & quality improvements
ภาพรวม:
เน้น polish ภาษา ไม่ใช่เปลี่ยนใหญ่
PHP 8.4 (2024/2025)
- Property hooks
- New language refinements
- Type system ยืดหยุ่นขึ้นแต่ยัง strict
- เตรียมอนาคต PHP 9 (ตัดของ legacy ออก)
ภาพรวม:
วางรากฐาน long-term มากกว่าฟีเจอร์หวือหวา
สรุปภาพใหญ่ (Evolution)
- PHP 1: เครื่องมือทำเว็บส่วนตัว
- PHP 2: scripting language สำหรับเว็บ
- PHP 3: ภาษาโปรแกรมสำหรับเว็บจริงจัง
- PHP 4 → Script สำหรับเว็บ
- PHP 5 → OOP language
- PHP 5.3 → Framework era
- PHP 7 → Performance revolution
- PHP 8 → Modern strongly-typed language
PHP 6 หายไปไหน
ทำไมถึงไม่มี PHP 6
หลัง PHP 5 เริ่มจริงจังกับ OOP แล้ว ปัญหาใหญ่ของ PHP ในยุคนั้นคือ
- Unicode / UTF-8
- PHP ใช้ string แบบ byte-based
- การจัดการภาษา non-English (จีน ไทย ญี่ปุ่น) ลำบาก
- Framework และ CMS เริ่มเจอปัญหานี้หนัก
ทีม PHP เลยตั้งเป้า:
PHP 6 = PHP ที่ “native Unicode”
PHP 6 ตั้งใจจะเปลี่ยนอะไร
แนวคิดหลักของ PHP 6 คือ
- เปลี่ยน string ภายในให้เป็น Unicode
- ทำให้ strlen(), substr() เข้าใจตัวอักษรจริง ไม่ใช่ byte
- แยก binary string กับ text string
- ทำให้ internationalization เป็น first-class citizen
ฟังดูดี… แต่ปัญหาใหญ่ตามมา
ทำไม PHP 6 ถึงล้ม
- Performance แย่มาก
- Unicode string ใช้ memory สูง
- เว็บ PHP สมัยนั้นต้องเร็วและถูก
- overhead สูงเกินรับไหว
- Backward compatibility พัง
- โค้ด PHP เก่าพังจำนวนมาก
- function พฤติกรรมเปลี่ยน
- extension เดิมใช้ไม่ได้
- Extension ecosystem ล่ม
- extension ต้อง rewrite ใหม่
- คนเขียน extension ไม่ตาม
- ทีมพัฒนาแตกแนวคิด
- บางคนอยาก Unicode
- บางคนอยาก performance
- สุดท้าย consensus ไม่เกิด
แล้วโค้ด PHP 6 หายไปไหน
ไม่หายทั้งหมด
บางส่วนถูก “แยกไปใช้” ใน PHP 5.x และ 7:
- Unicode handling → ไปอยู่ใน
- mbstring
- intl (ICU)
- Lexer / Parser บางส่วน → ปรับปรุงต่อ
- แนวคิด strict มากขึ้น → ส่งต่อไป PHP 7, 8
แต่ ตัว PHP 6 แบบเต็มๆ ไม่เคย release
ทำไมข้ามจาก PHP 5 → PHP 7
เพราะ:
- ไม่อยากให้คนเข้าใจผิดว่า PHP 6 เคยใช้งานจริง
- PHP 6 ถูกพูดถึงในหนังสือ บทความ เยอะมาก
- มีหนังสือ “PHP 6” ที่อิง code prototype
- ทีม PHP เลย “เผาเลข 6 ทิ้ง”
ผลลัพธ์สุดท้าย
แทนที่จะทำ Unicode ใน core:
- PHP เลือก:
- string = byte
- text encoding = responsibility ของ developer
- ใช้ library (mbstring, intl) แทน
- แลก Unicode เต็มรูปแบบ กับ performance + compatibility
สรุปสั้นมาก
- PHP 6 = โปรเจกต์ที่ล้ม
- ไม่เคยออก production
- ล้มเพราะ Unicode + performance + backward compatibility
- เลข 6 ถูกข้ามไปเลย
- แนวคิดหลายอย่างไปเกิดใหม่ใน PHP 7 และ 8

