ความคืบหน้า PHP Hoffman Framework

  • ทำการ redesign ตัว clean url ใหม่อีกรอบ ด้วยการกลับมาใช้แบบเดิมเมื่อตอนออกแบบครั้งแรกคือ controller/action แทน ส่วนต้องการแก้ไข url ใหม่ ก็เพิ่มลงไปใน xml เอา โดย default คือ <map pattern=”:controller/:action” /> ถ้าต้องการใช้ user/login เป็น login เฉย ๆ ก็ <map pattern=”login” action=”user/login” /> แทนซะ หรือถ้าต้องการ rewrite ตัว url ที่มีการส่ง value ด้วยก็ <map pattern=”news” action=”page/show/1″ /> แทนก็ได้เช่นกัน โดยในรุ่นต่อไปจะมี plugin เสริมสำหรับการ hook ตัว xml ตัวนี้ให้ไปใช้ database ได้ แบบเดียวกับ drupal แทนช้าลงและโหลด db มากขึ้น กำลังจุดลงตัวในส่วนนี้ โดย clean url นี้มีประสิทธิภาพเพิ่มขึ้นเยอะกว่าเดิมมาก และลดความซับซ้อนในการตั้งค่าลงไปเยอะด้วย แต่ต้องแลกกับความยืดหยุ่นบางส่วนไป แต่ถ้าว่า ok กว่าเดิมมาก ๆ ในตอนนี้
  • หน้า error handler page นั้น ok แล้ว เพื่อดักข้อผิดพลาดในกรณีไฟล์ของ controller หรือ view ไม่มี รวมถึง arguments ไม่ครบเมื่อ controller ไป handle ตัว action
  • ตัว config ไฟล์ใน .ini file และสามารถทำ inherit config ได้ด้วย เช่น
[production]
database.default.type=mysql
database.default.hostname=localhost
database.default.username=root
database.default.password=1234
database.default.name=album

[development : production]
database.default.hostname = localhost
database.default.username = root
database.default.password = 1234
  • เมื่อเราเลือก production เป็น environment มันจะไปดึงตัว config มาของ production มา แต่ถ้าใช้  development ก็จะไปดึงส่วนของ development ที่ override ตัว production มาใช้เท่านั้น ทำให้ลดการตั้งค่าลงไปเยอะ
  • ในส่วนของ Model layer มี 3 ทางเลือกให้ extends มาใช้งานได้ คือ Zend_Db, Doctrine หรือ LogicModel (ตัวนี้ผมเขียนเอง สนับสนุนแค่ MySQL เท่านั้น) โดยใครถนัดแบบไหนก็ใช้แบบนั้นได้เลย เพียงแค่ตั้งค่าใน Model แต่ละตัวว่าจะใช้แบบไหน กำลังหาจุดลงตัวเพื่อให้เราสามารถใช้ Model ได้หลากหลายรูปแบบการ extends จาก 3 ทางเลือก บางครั้ง Model บางตัวอาจจะเหมาะกับ Doctrine มากกว่า 2 ตัวที่เหลืออะไรแบบนั้น และอาจจะรองรับการเขียนด้วย function mysql(i) เดิม ๆ ได้ด้วย โดยผมมองว่า Model นั้นเป็น Business logic ซึ่งควรมี performance สูงที่สุดในการเขียนและนำไปใช้งานครับ
  • การส่งข้อมูลจาก controller ไปหา view นั้นใช้การ return ของ action ใน controller นั้น โดยการส่งข้อมูลแบบตัวแปรเดียวก็ได้ หรือส่งเป็น array ออกไปก็ได้ โดยส่งเป็น array จะทำการ fetch ข้อมูลให้ชั้นนึงเพื่อส่งผ่านเป็นตัวแปรนึงใน view ให้เลย โดยใช้การ map key เป็นชื่อตัวแปรใน dimension ที่ 1 ของ array ซะ
  • พยายามเอา ORM หลาย ๆ ตัวมาใช้ร่วมกันใน Model เพื่อลดการยึดติดของระบบกับรูปแบบ ORM ของตัวใดตัวหนึ่ง
  • ยังคงใช้ Zend แบบหลักในการพัฒนาระบบภายในเช่นเดิม

ตอนนี้โดยรวมพยายาปั้นตัวแรกออกมาให้ได้ก่อน เพื่อเอามารับคำติของทุกท่านครับ เพื่อเอามาพัฒนาต่อไปครับผม

6 thoughts on “ความคืบหน้า PHP Hoffman Framework”

  1. แจ่ม เลยครับน้อง ..
    ถ้ามีโอกาส พี่จะเอาไปใช้แน่นอน..

  2. สู้ๆ ครับ PHP Hoffman Framework เมืองไทยจะเกิดขึ้นแล้ว
    เอาใจช่วยพี่น้อง มาไกลแล้วทำให้เสร็จน่ะ เดี่ยวจะได้ไปเปิด ที่ barcamp on the beach
    อิอิ.. อยากให้แล้วดิ

  3. ใช้ config เป็น .ini ระวังเรื่องการ access ด้วยนะครับ
    เห็นหลายเว็บที่ทำ PHP แล้วใช้ .ini เก็บพวก user/password ของ database แบบนี้โดย hack มาเยอะแล้ว

  4. kaze – ตอนนี้กำลังดูความเหมาะสมในส่วนนี้อยู่ จริง ๆ ผมได้ปิดส่วน access ใน .htaccess ไว้แล้ว แต่ปัญหาต่อมาคือ ถ้าตัว .htaccess ไม่ได้ จะทำยังไง ครับ อาจจะมีการปรับเปลี่ยนมาใช้ array แทนครับผม (จริง ๆ มันง่ายกว่าด้วยซ้ำไม่ต้องมาเสียเวลา parse data)

    ขอบคุณสำหรับข้อเสนอแนะครับผม

  5. อือ น่าสนใจนะครับ ตอนนี้ว่ากำลังจะหันมาใช้ framework เพื่อลดการเขียน code ลงไปหน่อย ยังตกลงใจไม่ได้
    ว่าจะเลือกตัวไหน ตอนนี้ cakePHP มาวินอยู่ในใจผม เพราะมันง่าย ถ้าทำออกมาแล้วง่ายๆเหมือน cake ผมจะช่วย
    โปรโมตในบอร์ดต่างประเทศอีกแรง เสียดายตอน barcamp ผมไม่ได้ไป

Comments are closed.