1. ประเด็นเรื่อง hmvc กับ mvc
- เรื่อง reuse มันไม่ใช่ feature ของ hmvc ใน mvc ธรรมดาที่สามารถแยก module ได้ก็ copy วางได้เช่นกัน เช่น zend เป็นต้น
- แล้ว hmvc คืออะไรล่ะ ? ถ้าในส่วน gui ของเราแย่งเป็นส่วนๆได้หลายๆส่วน (ขอเรียกว่า widget) ซึ่งแต่ละส่วนนั้นๆ สามารถถูกใช้งานได้จากหลายๆส่วน ซึ่่งแต่ละ widget นั้นก็สามารถประกอบด้วย widget อื่นๆ ได้อีก widget แต่ละตัวเป็นอิสระต่อกัน การเขียนด้วย hmvc มันจะดูง่ายมาก มอง widget นั้นๆ เป็น controller ตัวนึง แทนที่จะ php include ก็ request ไปที่ controller นั้นแล้วเอา output มาแสดง ซึ่งหลักการจะคล้ายๆ ajax แหละ แต่ทำที่ฝั่ง server side เลย ไม่ใช่ส่งไปที่ client แล้วให้ client request ajax มา ซึ่ง hmvc มันมีอีกชื่อคือ widgetization
- ถ้าสนใจก็ลองไปอ่านนี่ก็ได้ เขียนโดยผู้พัฒนา kohana อ่านแล้วจะได้รู้ว่าเคสไหนควรจะออกแบบโครงสร้างระบบให้เป็นแบบ hmvc
http://techportal.inviqa.com/2...ng-web-applications-with-hmvc/ - ซึ่ง framework ที่ provide hmvc implementation มาให้ ใน php มี 2 ตัวคือ kohana กับ fuel ซึ่ง 2 ตัวนี้มันคล้ายๆกัน
2. ประเด็นเรื่อง framework ตัวอื่นๆ
A. zend framework1. lib มีให้ใช้เพียบพร้อมสุด
2. lib provide การใช้งานแทบจะทุกรูปแบบ
3. เนื่องจากมัน provide ไว้กว้างมาก จึงช้าสัดๆ
4. โคตรสร้างมัน modular ที่สุดในบรรดาทุก framework ทำให้อยากเติมนิด แต่งหน่อย แทรกหรือเปลี่ยนการทำงานได้แทบจะทุกจุดของ flow การทำงาน รองรับการทำงานที่หลากหลาย(ทุกรูปแบบเลยด้วยมั้ง)
5. low tech + abstract กับ interface แมร่งจะเยอะไปไหน จำนวนไฟล์รวมทั้ง เฟรมเวิร์คหลายพันอ่ะ
6. เนื่องจากมันช้าจึงเหมาะกับระดับ enterprise
7. เนื่องจากข้อ 4 จึงควรศึกษา เพื่อ เอา lib มันมาใช้ หรือเอาเทคนิคการทำงานของมัน มาสร้าง lib เราเอง
ความน่าศึกษา: 4 ดาว
B. Symphony1. high technology การ config ส่วนใหญ่ใช้ annotation ได้ ทำให้อ่านได้ง่ายได้
2. บังคับใช้ doctrine orm นอกจากจะศึกษามันแล้วต้องศึกษา doctrine orm อีกทำให้ learning curve สูงที่สุดในบรรดาโปรเจคอื่น
3. เป็นเฟรมเวิร์คที่ใช้แล้ว ควรจะต้องใช้ php caching ควบคู่ด้วย เช่นพวก xcache, apc เป็นต้น
4. เป็น framework ที่มี feature จำพวก high tech เยอะที่สุดในบรรดา php framework (Dependency injection , Templating engine Twig , HTTP caching, Data Mapper, Transaction Management(ใช้ doctrine) แล้วก็อื่นๆ)
ความน่าศึกษา: 5 ดาว
C. Lavarel1. มาแรงสุดตอนนี้แล้ว
2. dev ไวดี
3. มี transaction management (น่าจะ เพราะมันใช้ Doctrine Database Abstract Layer)
4. มี view rendering helper ที่เจ๋ง ชนะ framework อื่นขาด มันมีชื่อเรียกเท่ๆอยู่ อยู่ รู้สึกว่าชื่อ blade ไรเนี่ยแหละ 55
ความน่าศึกษา: 5 ดาว
ส่วน frameowrk อื่นๆ ความน่าศึกษา ก็กลางๆครับ เช่นพวก cake, yii เป็นต้น
สรุปโดยรวม
1. framework ที่ควรศึกษาเพื่อเอาไปใช้ implement จริง ก็ Fuel + Lavarel เพราะสองตัวนี้ dev ได้ไว <Fuel นี่น่าจะไวสุด เรื่องการ reuse น่าจะทำได้สะดวกที่สุดในบรรดา framework ทุกตัว>
2. Zend + Doctrine ก็น่าศึกษามากเช่นกัน เพราะไอสองตัวนี้ เอาไป integrate กับชาวบ้านได้หมด
3. อยากเปิดโลกทัศน์ ก็ศึกษา symphony ด้วย เหมาะกับพวกขึ้เกียจ เพราะมันทำให้ง่ายขึ้น + line of code สั้นลง <พวก config ต่างๆนะ business logic มันก็ต้องเท่ากันแหละ 555+>
4. doctrine คือ orm framework ศึกษายากหน่อย แต่มี tool เพื่อ auto generate mapping ให้ ตอน query/update/insert/delete ทำได้ไวกว่า orm ตัวอื่น ส่วนเรื่อง reuse ก็ copy entiy,repositoryและก็พวก business service เดิมๆมาใช้ได้ตลอด
5. doctrine อ่าน query ที่ซับซ้อนได้ง่ายได้ ด้วยภาษา query ของมันเองซึ่งมันคล้ายๆ sql แหละ แค่มันสั้นลง และมองในเชิง oo ได้สบาย ตัวอย่าง
"select e from Employee e join e.department d where d instanceof AccountingDepartment"
ถ้าเปลงเป็น sql ก็
"select ... from Employee e join Department d on e.department_id = d.department_id where d.department_type = 1"
อ่านง่ายขึ้นเยอะ 55+ อ่านผ่านๆได้เลย ไม่ต้องนั่งคิด 55+
6. Doctrine นอกจาก reuse entity แล้ว เวลา copy entity มาใช้ ให้มัน generate database schema ของระบบนั้นๆ ให้ได้เลย มาหมด f คง fk สามารถ config mapping พวก index ได้ด้วย ถ้ามี stock ไว้เยอะๆแล้ว ลืม phpmyadmin ไปได้เลย 555+
7. framework ยอดนิยมอื่นๆ ไปศึกษาไว้ก็ไม่เสียหาย