Symfony… and a Little Bit About Rails and Struts

Posted by kong

หายไปหลายวันช่วงหยุดสงกรานต์ ไม่ได้ออกไปไหนหรอกครับ นั่งๆ นอนๆ อยู่หน้าคอมเกือบทั้งวัน

เนื่องด้วยในการเรียนวิชาระเบียบวิธีวิจัย กลุ่มผมไปเสนอวิธีแก้ปัญหาไว้ว่า จะสร้างเว็บไซต์ขึ้นมา เพื่อเป็นระบบจองใช้เครื่องคอมพิวเตอร์นอกเวลาเรียนของนักเรียน ลักษณะก็คล้ายๆ เว็บจองใช้คอมพิวเตอร์ ของ IT Square ของ ม. เกษตรศาสตร์ (KITS) (เข้าได้เฉพาะคนใช้ wireless ในเกษตร หรือใช้งานผ่าน VPN)… ไม่คล้ายก็แปลกล่ะ ลอกมาเกือบทั้งดุ้น :em02:

เมื่อไม่จำกัด tools ที่ใช้ ก็แน่นอนว่าต้องหากินกับของเก่า ใช้ PHP นี่แหละคุ้นมือสุดแล้ว ทีนี้คำถามก็คือ จะเขียนเอง หรือจะใช้ framework ดี

จริงๆ ที่ออกแบบไว้มันมีไม่กี่หน้า (display, reserve, confirm, cancel) ถ้าเขียนเองก็คงใช้เวลาไม่เท่าไหร่ แต่ถ้าจะเอาไปใช้จริง ก็ต้องมี backend ด้วย ชักเยอะแฮะ ประกอบกับที่เคยตั้งใจไว้ใน My New Year’s Resolution เลยตัดสินใจหัดใช้ symfony ดีกว่า

ครึ่งวันแรกหมดไปกับการลองทำ My first symfony project อย่างแรกที่รู้สึกคือ สบายแล้วเฟ้ย… ส่วน backend แค่ใช้ admin generator แล้วแก้ไขนิดหน่อยก็น่าจะใช้ได้ จากนั้นก็เริ่มอ่าน documentation รู้สึกว่าเค้าเขียนได้ดี และค่อนข้างละเอียด มี tips แทรกเป็นระยะๆ เรียกได้ว่าอ่านจบก็น่าจะทำได้เลย

documentation ทั้งหมดมี 19 บท แต่ผมว่าอ่านแค่ 1-10 ก็สร้างแอพพลิเคชันได้แล้ว เลยเริ่มลองทำดู พร้อมกับเปิด documentation อ่านคู่ไปด้วย (อ่านจบไปรอบนึง แต่จำไม่ได้หรอกครับ แค่ให้พอรู้ว่าเราอยากทำแบบนี้ ต้องไปเปิดหาจากบทไหน) ซักพักนึงก็นึกขึ้นมาได้ — เฮ้ย มันเหมือน Rails เลยนี่หว่า

<!--more-->

เลยคิดต่อไปว่า ทำไมผมลองเล่น Ruby on Rails แล้ว ทำแอพพลิเคชันออกมาเป็นชิ้นเป็นอันแบบ symfony ไม่ได้ คิดไปคิดมา ก็ได้ข้อสรุป(เอาเอง)ว่า ผมเรียนรู้ RoR แบบผิดวิธีไปหน่อย คือเขียนไม่เป็นทั้ง Ruby และยังไม่เข้าใจการทำงานของ Rails ผลสุดท้ายเลยได้แค่ generate scaffold แล้วก็แก้ไขอะไรนิดหน่อย ตาม tutorial เ่ท่านั้นเอง

เมื่อเทียบกับ symfony ที่เข้าใจ syntax ของ PHP อยู่แล้ว ทำให้เรียนรู้ได้เร็วกว่าเยอะ และยังมั่นใจว่า ถึงไม่ใช้ helper ของมัน ก็เขียนให้มันทำงานได้เหมือนกัน (แต่เวลาทำจริงก็ใช้ helper แหละ fast and sure :em32: )

ใน New Year’s Resolution เคยบ่นไว้ว่าอยากหัดใช้ทั้ง Struts, symfony, และ Rails ก็พอดีเทอมนี้มีการสอน Struts ในชั้นเรียนด้วย บังเอิญดีจริงๆ :em44: แต่หลังจากลองใช้ดูแล้วก็พบว่า Struts (เวอร์ชัน 1) เป็นประมาณ framework รุ่นโบราณ ต้องเขียนไฟล์ configuration เองเยอะมาก และการเขียนแอพพลิเคชันให้สำเร็จออกมาซักตัว แทบจะขึ้นอยู่กับ IDE — อันนี้ประสบการณ์ตรง สอบเขียนเว็บแอพธรรมดาๆ กรอกข้อมูลใส่ฟอร์ม, มี validation แล้วเอาข้อมูลที่ได้มาแสดงผล กลุ่มผมใช้ Netbeans มัน gen ให้เกือบทุกอย่าง เขียนเสร็จภายในเวลาที่กำหนด, กลุ่มที่ใช้ JDeveloper เป็นก็ทำทัน แต่กลุ่มที่ใช้ Eclipse นี่นั่งมึน (หรือเค้าใช้ไม่เป็นก็ไม่รู้) ส่วนอีกกลุ่มใช้ WebSphere ก็ทำเลยเวลาไปตั้งนานกว่าจะเสร็จ

กลับมาเรื่อง symfony ต่อ… หลังจากได้เว็บเป็นรูปเป็นร่างแล้วก็มาหัดใช้ Ajax เป็นลูกเล่นเพิ่มเติม บอกไว้ก่อนเลยว่าผมเขียน Ajax เองไม่เป็น และคิดว่าต่อไปก็คงจะเขียนเองไม่เป็นอยู่ดี เพราะแค่ใช้ helper ที่ symfony ให้มาก็คิดว่าน่าจะทำได้เท่าที่คนใช้เว็บทั่วๆ ไปจะนึกออกแล้วมั้ง เพราะ symfony มาพร้อม Prototype และ script.aculo.us ทำให้การเรียก Ajax หรือ JSON พร้อมใส่ effect ง่ายแบบใช้ฟังก์ชันเีดียวจบ :em03:

ความเห็นของคนเพิ่งเริ่มใช้ symfony ได้ 5 วัน (a.k.a. ยังเห่ออยู่) ก็ประมาณนี้ครับ ถ้าเรียงลำดับความชอบตอนนี้ก็คือ symfony » RoR » Struts ตามลำดับ :em26:

Comments

sakanoz's picture

:em10:

:em10: พูดเรื่องไรอยู่เนี่ย ไม่รู้เรื่องซักกะอย่าง

Posted by sakanoz (not verified) | Apr 19th, 2007 at 1:03 am | Reply
pittaya's picture

เมื่อก่อน

เมื่อก่อนเคยคิดจะหัด struts เหมือนกัน แต่แค่อ่าน doc ก็ไม่ไหวแล้ว

Nobody uses Java anymore.

Posted by pittaya (not verified) | Apr 19th, 2007 at 3:35 am | Reply
nat3's picture

อืม

อืม ว่าจะกลับมาเขียน php อยู่พอดี เอามาลองเล่นมั่งดีกว่า
ส่วน java ไว้ใช้ตอนทำงานก็พอและ :em25:

Posted by nat3 (not verified) | Apr 19th, 2007 at 7:37 am | Reply
PeeTai's picture

sakanoz -

sakanoz - การที่คุณเขียนประโยคนี้ทำให้ผมรู้ว่า คนคอมพิวเตอร์พูดไม่รู้เรื่องพอ ๆ กับพวกจิตรกรรมเลยอ่ะ ^o^ ฮา

Posted by PeeTai (not verified) | Apr 19th, 2007 at 10:36 am | Reply
chanon's picture

จากที่ผมไ

จากที่ผมได้ลองทำ webapp ที่ใช้อยู่จริงๆ ที่บริษัทตัวนึงนะครับที่ใช้ Ruby on Rails .. ผมว่า Ruby on Rails ก็เจ๋งมากนะ แต่ต้องเรียนรู้ Ruby ให้เข้าใจก่อน

แต่ข้อเสียของ RoR อาจจะเป็นว่าหาที่ deploy ลำบากกว่า และอาจจะ performance ห่วยกว่า

ผมเลยกำลังจะแปลง application นั้นให้เป็น PHP แทน ซึ่งตอนแรกผมก็สนใจ symfony เหมือนกัน แต่ผมดูแล้วทำไมรู้สึกมันวุ่นวายๆๆ จัง tutorial ก็ยาวเหยียด ก็เลยลองไปดู CakePHP ปรากฎว่ารู้สึกว่ามันง่ายยยย มาก ใชได้้สะดวกสบาย ไม่ต้องเรียนรู้อะไรมาก

ที่สำคัญเท่าที่ผมดูๆ database layer ของ symfony มันต้องนั่งเขียน config เยอะเหมือนกัน แล้วมันก็กำลังจะเปลี่ยนจาก propel เป็นอะไรซักอย่างอีกตัว

ในขณะที่ CakePHP database layer มันฉลาดเหมือนของ Rails คือมันจะไปอ่าน data model จาก database เอง ไม่จำเป็นต้องมานั่งเขียน description อะไรให้วุ่นวาย นอกจากแค่กำหนด relationships

สรุปว่าลองดู CakePHP บ้างก็ดีนะ ผมว่า work

Posted by chanon (not verified) | Apr 20th, 2007 at 2:19 am | Reply
kong's picture

chanon: ผมชอบ RoR

chanon: ผมชอบ RoR นะครับ ก็คิดว่ามันเจ๋งแหละ (ไม่งั้นจะมี framework ของ PHP เลียนแบบกันตรึมเรอะ) แต่ผมดันไปหัดเล่นทั้งๆ ที่ยังเขียน Ruby ไม่เป็นอะ เลยมึนกันไปใหญ่ =.=

CakePHP เคยได้ยินกิตติศัพท์เหมือนกันครับ แต่ดูๆ documentation แล้ว รู้สึกว่าเริ่มต้นกับ symfony น่าจะง่ายกว่า ลองเปรียบเทียบที่ CakePHP อธิบายเรื่อง MVC ผมว่า ของ symfony อธิบายได้ประทับใจกว่าเยอะ

Posted by kong (not verified) | Apr 20th, 2007 at 9:22 pm | Reply
crucifier's picture

ไม่มีใครส

ไม่มีใครสนใจ Prado กันบ้างเลยเหรอ

Posted by crucifier (not verified) | May 12th, 2007 at 1:42 am | Reply
Orca's picture

น่าลอง symfony

น่าลอง symfony ครับ เท่าที่ดูผ่านๆ doc ค่อนข้างเยอะทีเดียว หนังสือออนไลน์ก็มีให้อ่าน หุๆ ชอบเลย :em19:

Posted by Orca (not verified) | Sep 13th, 2007 at 9:09 pm | Reply
Fueled by CodeIgniter : Suksit Sripitchayaphan's picture

[...]

[...] กลัวทำงานเสร็จไม่ทันส่ง ส่วน Symfony เคยเล่นไปแล้ว แต่ลืมแล้วเหมือนกัน [...]

Posted by Fueled by CodeIgniter : Suksit Sripitchayaphan (not verified) | Mar 5th, 2008 at 4:44 am | Reply
boy's picture

Symfony ใช้อย่างไรครับ ลองอ่านแล้วยัง งง นะครับ

สวัสดีครับผม ผมเพึ่งหัดเช่น framwork ของ Symfony นะครับ ลองผ่านอกสารแล้ว ก็ยัง งงงงงงง อยู่นะครับ ลองมาหลายวันแระ ยังเริ่มต้นไม่ถูกเลยนะครับ มีใครแนะนำได้บ้างครับ เอาแบบไม่ต้องอธิบายยาว นะครับ เข้าใจง่าย ๆ นะครับ มีใครแนะนำได้มั่งครับ ขอบคุณครับ อย่าให้ผมไปอ่านเอกสารเลยนะครับ อ่านแล้วครับ งง นะอ่ะ

Posted by boy (not verified) | Aug 14th, 2008 at 3:22 pm | Reply

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options