PHP 5 เพิ่ม OOP model เข้ามา ความแตกต่างระหว่าง Abstraction และ Encapsulation:
Encapsulation (การห่อหุ้ม)
- รวม data members (variables) และ implementation details เป็นหน่วยเดียวคือ Class
- เป็นกลไกป้องกัน data members ไม่ให้เข้าถึงโดยตรงจากภายนอก
- Data members เข้าถึงได้เฉพาะผ่าน methods ของคลาสเดียวกัน
- ใช้ access modifier private และ protected
- ลดความซับซ้อนของแอปพลิเคชัน
Abstraction (การนามธรรม)
- แสดงเฉพาะฟีเจอร์ที่จำเป็น ซ่อนรายละเอียดการทำงาน (Implementation details)
- ซ่อนรายละเอียดการทำงานจากผู้ใช้ แสดงเฉพาะ functionality
- ใช้ implement polymorphic concepts: ใน abstract class ประกาศเมธอดอย่างเดียว คลาสลูก implement รายละเอียด
- Abstract class ไม่สามารถ instantiate ได้
- ลดความซับซ้อน ทำให้โค้ด reusable