AMp เขียนครับ
...จากการเปรียบเทียบเฟรมเวิร์ก อันนี้ ก็เห็นว่ามีเฟรมเวิร์กอีกตัวนึง ที่มีคุณสมบัติโดยรวมเหมือนกับ CakePHP นั่นก็คือ Symfony
Symfony เป็นเฟรมเวิร์กสำหรับ php5 โดยเฉพาะ ข้อดีที่ผมคิดขึ้นเองอย่างนึง นั่นก็คือ ใน php5 มีคำสั่ง autoload สำหรับโหลดคลาสเมื่อสร้างออปเจ็กต์โดยอัตโนมัติ ทำให้น่าจะช่วยเรื่องความเร็วได้มากขึ้น (ไม่แน่ใจว่า CakePHP ได้ใช้ตรงนี้ถ้ารันใน php5 หรือเปล่า) ไม่ต้องโหลดคลาสทั้งหมดมาเก็บๆ ไว้ตั้งแต่แรก (CakePHP มีคนบ่นหลายคนเหมือนกัน ถ้า model ซัก 30 ตัวเนี่ย)
เอาเหอะ แต่นั่นก็ไม่ใช่ประเด็นหลัก
เท่าที่ได้ลองเล่น My First Project Tutorial ก็รู้สึกว่ามันคล้าย rails เหมือนกัน จะทำนู่นทำนี่(create project,model...) ก็สั่งผ่าน command เอา เหมาะสำหรับผู้ที่กระสันอยากจะเล่น rails แต่ไม่มีโฮสให้เล่น
แต่ด้วยความที่งานบางอย่างต้องรันผ่าน command นี่แหละ ทำให้การ debug แบบ on-line บน shared host ทั่วๆ ไป จึงไม่สามารถทำได้ ซึ่งผมเข้าใจว่า คนสร้าง symfony คงจะให้ debug บนเครื่อง programmer ให้เสร็จ แล้วค่อยอัพขึ้นไปบน server ทีเดียวเลย (ซึ่งจริงๆ แล้วก็ควรเป็นแบบนี้แหละ - แต่บางทีรันบน server มันได้เจอปัญหาเต็มๆ ดีกว่า)
เหลือบไปเห็นระบบ cache ของ symfony แว้บๆ ว่าสามารถเลือก cache ได้ในระดับ action หรือตาม component หรือจะ cache ทั้ง page เลยก็ได้ เจ๋งดี (ถ้าจำไม่ผิด CakePHP ไม่สามารถเลือก cache ได้ละเอียดขนาดนี้)




จุดเด่นของ symfony ที่น่าสนใจมากๆ เลยก็คือ debugger ที่เป็นแถบยาวๆ มุมบนขวาของหน้าเว็บ ซึ่งจะรายงาน variables, setting, log, message ให้เราทราบ ซึ่ง message นี้ก็จะออกมาจากฟังก์ชั่นต่างๆ ที่ทำงานอยู่นั่นแหละ ก็ช่วยในการ track อะไรหลายๆ อย่างได้เป็นอย่างดี และที่เวิร์กมากๆ เลยก็คือ มันบอกด้วยว่าใช้ query อะไรบ้าง กี่วินาที แล้วก็ในการประมวลผลครั้งนั้นๆ ใช้เวลาไปกับโมดูลอะไรบ้าง กี่วินาทีด้วย ไม่ต้องไปง้อ Zend studio เลย เวิร์กจริงๆ
อีกจุดเด่นของ symfony ก็คือ Backend generator ที่จะช่วยสร้างหน้าเว็บสำหรับ manage ข้อมูล (ประมาณ phpMyAdmin นั่นแหละ แต่ basic กว่ามาก) ก็ช่วยประหยัดเวลาทำ backend ไปได้โขเลยเหมือนกัน ซึ่งแต่ก่อนอาจจะต้องใช้ PhpMaker มาช่วยทำ แต่ถ้าใช้ symfony ก็ไม่ต้องแล้วววว
ใครที่เล่น Cake มาก่อน คงรู้สึกอึดอัดเหมือนกัน ถ้าจะต้องทำหลายๆ app ในเว็บเดียว เพราะ cake จะมอง mvc ทั้งหมดเป็น app ตัวเดียวกัน ทำให้การ maintain ระบบใหญ่ๆ ค่อนข้างสับสนเหมือนกัน แต่ใน symfony แล้ว เราสามารถสร้าง app ได้หลายๆ ตัวในเว็บเดียวได้เลย แต่ต้องไป config url rounting กันเอาเอง (เพื่อให้ url ดูสวยงาม เหอๆ)
จุดด้อยจุดนึงของ symfony ที่ผมเห็นระหว่างที่ลองทำ tutorial นั่นก็คือ default ของ url rounting ดูไม่ค่อยจะ friendly เหมือน CakePHP เลย ถึงแม้ว่า symfony จะยอมให้เรา config routing ได้เองก็เถอะ แต่ถ้าต้องมานั่ง config ทุกครั้งที่ทำ app เพื่อให้ url มันสวย อ่านง่ายเหมือน CakePHP ล่ะก็ คงไม่สนุกแน่นอน
ใครที่ชักเริ่มอยากลอง symfony ก็ลองได้ที่ symfony-project.com