Framework คืออะไร ???
ก่อนอื่น เพื่อความเข้าใจตรงกัน ขอพูดถึงความหมายของ Framework หรือ Application Framework ไว้ เพื่อเป็นแนวทางเดียวกัน ไม่ไขว้เขว
Application Framework มีความหมายในภาษาอังกฤษคือ:
“In computer programming, an application framework is a term usually used to refer to a set of libraries or classes that are used to implement the standard structure of an application for a specific operating system. By bundling a large amount of reusable code into a framework, much time is saved for the developer, since he/she is saved the task of rewriting large amounts of standard code for each new application that is developed.”
รายละเอียดเพิ่มเติมได้ที่: http://en.wikipedia.org/wiki/Application_framework ซึ่งผมขอแปล และปรับ ตามความเข้าใจของผมเอง (ด้วยทักษะภาษาอังกฤษอันน้อยนิด) ว่า
Framework ก็คือ ชุดของ Libraries หรือ Classes สำหรับใช้ในการพัฒนาโปรแกรม โดยมีโครงสร้างของโปรแกรมที่เป็นมาตรฐาน (มาตรฐานตามที่คนสร้าง Framework กำหนด) โดยที่ภายใน Framework นั้น จะมี Code ที่ Reuseable หรือ Code ที่นำกลับมาใช้อีกได้ อยู่เป็นจำนวนมาก ซึ่งจะทำให้เราประหยัดเวลาในการทำ Application หนึ่งๆ ได้อย่างมากมาย เนื่องจากเราไม่ต้องเขียน Code เดิมๆ ซ้ำๆ ใหม่ทุกครั้งที่พัฒนา Application ใหม่ หรือ Application ที่ทำงานคล้ายๆ กัน รายชื่อของ PHP Framework เท่าที่พบ มีดังนี้น้ะคับ
- Zend Framework
- CakePHP
- Symfony Project
- Seagull Framework
- WACT
- Prado
- PHP on TRAX
- ZooP Framework
- eZ Components
- CodeIgniter
การเขียนโปรแกรมสมัยก่อน หรือสมัยเริ่มแรกๆ ของ PHP ด้วยคุณสมบัติ HTML Embedded เราคงคุ้นเคยกับการเขียน code php ปนกันกับ html หรือ wml
และแล้วกาลเวลาก็เป็นเครื่องพิสูจน์ให้เห็นว่า การเขียนโปรแกรมแบบนี้ ที่บางคน (โดยเฉพาะคนที่เคยเขียนแค่โปรแกรมเล็กๆ) มองว่ามันก็ง่ายดี ไม่ซับซ้อนเห็นได้ชัดเจน แต่ในความเป็นจริงแล้ว ใน web application จริงๆ ซึ่งมีหน้าตา และการทำงานที่ใกล้เคียงกับ desktop application เข้าไปทุกที ทำให้ระบบมีขนาดใหญ่ มีการทำงานที่ซับซ้อนขึ้น ถ้าเขียนแบบสมัยก่อน ในการดูแล แก้ไข ปรับปรุง จะทำได้ค่อนข้างยุ่งยาก และเสี่ยงมาก เพราะต้องไปเปิด source code ที่มีจำนวนมาก แล้วมาไล่ และแก้ไขเป็นจุดๆ ไปจึงได้มีคนพยายามคิดหาวิธี ในการออกแบบทางสถาปัตยกรรม ขึ้น ในรูปแบบ (pattern) ต่างๆ กันออกไป และ pattern ตัวหนึ่ง ที่ได้รับความนิยมกันอย่างแพร่หลายคือ