Zend Framework เป็นเฟรมเวิร์กการพัฒนา PHP แบบโอเพ่นซอร์สที่ใช้ PHP5 ทั้งหมดซึ่งพัฒนาโดย Zend Company สามารถใช้ในการพัฒนาโปรแกรมและบริการบนเว็บ โดยใช้รูปแบบสถาปัตยกรรม MVC (Model-View-Controller) เพื่อแยกส่วนต่างๆ ของแอปพลิเคชัน อำนวยความสะดวกในการพัฒนาและบำรุงรักษาโปรแกรม
ZF2 ไม่ใช่แค่การอัปเดตแบบแพตช์เหมือนกับเฟรมเวิร์กอื่นๆ แต่จะเขียนโค้ดทั้งหมดของ ZF1 ใหม่ทั้งหมด โดยมีสโลแกนหลักคือ "ประสิทธิภาพสูง"
มาดูกันว่า ZF2 มีฟีเจอร์ใหม่อะไรบ้าง:
1. การทำให้เป็นโมดูล (ModuleManager)
เมื่อเปรียบเทียบกับ ZF1 แล้ว ZF2 รองรับแนวคิดของโมดูลโดยกำเนิด โปรแกรม PHP ของบริษัทอื่นสามารถเปลี่ยนเป็นโมดูล Zend ได้ ตราบใดที่เป็นไปตามมาตรฐานการเข้ารหัสและโครงสร้างโค้ดของ Zend ปัจจุบัน มีการเปิดตัวโมดูลทดลองจำนวนหนึ่งแล้ว (ดูโมดูล ZF2) มีโครงการดีๆ มากมาย เช่น Doctrine ORM
คาดการณ์ได้ว่าเมื่อ ZF2 เติบโตอย่างช้าๆ โมดูลเสริมก็จะปรากฏขึ้นมามากขึ้นเรื่อยๆ เป็นไปได้ว่าการพัฒนาโครงการในอนาคตโดยใช้ ZF2 จะง่ายและสะดวกพอๆ กับแบบเอกสารสำเร็จรูป
2. ขับเคลื่อนด้วยเหตุการณ์ (EventManager)
ในโปรแกรมแบบเดิม โค้ดจะดำเนินการในลำดับเชิงเส้น ดังนั้นจึงมักจะเป็นเรื่องยากที่จะแยกฟังก์ชันบางอย่างออกเป็นส่วนประกอบหรือโมดูลในระหว่างการพัฒนา
ที่ขับเคลื่อนด้วยเหตุการณ์หรือ hook จะเปลี่ยนวิธีการทำงานของโปรแกรมทั่วไปในลักษณะที่คล่องตัว หลังจากใช้งานที่ขับเคลื่อนด้วยเหตุการณ์ โปรแกรมจะทำงานในลักษณะการกระโดดของ "registered event" => "triggered event" ซึ่งสามารถรันได้ โดยไม่กระทบต่อ ด้วยโค้ดโปรแกรมดั้งเดิมทำให้ง่ายต่อการเพิ่มตรรกะทางธุรกิจใหม่ในทุกสถานที่ ทำให้การพัฒนาโครงการมีความยืดหยุ่นอย่างมาก
3. ผู้จัดการฝ่ายบริการ
แนวคิดของผู้จัดการฝ่ายบริการมาจากแนวคิดการเขียนโปรแกรมของ "รูปแบบตัวระบุตำแหน่งบริการ" แนวคิดนี้สนับสนุนการแยกฟังก์ชันอิสระแต่ละรายการในโปรแกรมเป็น "บริการ" แต่ละบริการสามารถปลุกได้โดยอิสระเฉพาะเมื่อมีการเรียกใช้บริการเท่านั้น โปรแกรมที่เกี่ยวข้องกับบริการจะเริ่มต้นขึ้น
นี่คือเคล็ดลับของการปรับปรุงประสิทธิภาพของ ZF2 แนวคิดของ ServiceLocator สะท้อนให้เห็นในทุกที่ในกระบวนการเริ่มต้น MVC ของ ZF2 การเรียกไปยังโมดูลฟังก์ชันนั้น "ตระหนี่" อย่างยิ่ง ซึ่งจะต้องสร้างความประหลาดใจให้กับนักพัฒนาที่เคยประสบปัญหามาก่อนอย่างแน่นอน ด้วยผลงานของเซนด์
4. การฉีดพึ่งพา
การพึ่งพาการฉีดมีการใช้กันอย่างแพร่หลายในเฟรมเวิร์ก Java หลักและสามารถแยกแอปพลิเคชันขนาดใหญ่ได้อย่างมีประสิทธิภาพ การนำ Di เข้าสู่ ZF2 ได้ผ่านการพิจารณาและการแลกเปลี่ยนซ้ำแล้วซ้ำเล่า แม้จะเข้าสู่ช่วงเบต้าแล้ว Di ก็ยังคงใช้เป็นโซลูชันการใช้งานขั้นพื้นฐานสำหรับ ZF2 และการกำหนดค่า Mvc ทั้งหมดก็ใช้ Di ในท้ายที่สุด เพื่อหลีกเลี่ยงไม่ให้ตกอยู่ในหล่มการเขียนโปรแกรมเมตาดาต้า (การเขียนโปรแกรมเมตาดาต้า) ที่ Di อาจทำให้เกิดขึ้น Di จะถูกใช้เป็นการใช้งานด้านล่างของ ZF2 เท่านั้น และ ServiceManager จะถูกเพิ่มไปที่เลเยอร์ด้านบน นักพัฒนาทั่วไปไม่จำเป็นต้องสัมผัสกับระดับ Di เมื่อใช้ ZF2 อย่างไรก็ตาม สิ่งนี้ไม่ได้ป้องกัน DI จากการมีอยู่และทำงานเป็นส่วนประกอบ PHP ที่ยอดเยี่ยม
5. การเขียนโปรแกรมเพื่อสังคม
โค้ดของ ZF2 ได้รับการโฮสต์อย่างสมบูรณ์บน Github ด้วยการออกแบบที่ยอดเยี่ยมของ Github ทุกคนสามารถเข้าร่วมในการสร้างโปรเจ็กต์ ZF2 ได้อย่างง่ายดายผ่านทางทางแยก และยังส่งฟังก์ชันโมดูลใหม่ได้อีกด้วย ผู้เขียน AlloVince ยังช่วยทีม Zend แก้ไขข้อบกพร่องบางอย่าง และพบว่าทีม Zend ตอบสนองอย่างรวดเร็วมาก (ไม่เกิน 24 ชั่วโมง) และใช้เวลาในการตอบข้อเสนอแนะอย่างจริงจัง ดังนั้นการเข้าร่วมโครงการ ZF2 จึงเป็นทางเลือกที่ดีสำหรับการเข้าร่วมโครงการโอเพ่นซอร์ส PHP