ก่อนอื่น ก็ต้องแนะนำตัวก่อนนะครับ ผมชื่อลิงเน้อ~

จะเล่าย้อนๆ ก่อนแล้วกัน ผมเป็นคนนึงที่ ชอบ PHP มากๆเลยนะ แต่ว่าไม่ค่อยจะได้เขียน OO (Object Oriented) กับเขาเท่าไหร่นักหรอกจนถึงขนาดที่ ต้องแบบ ว่า ไปถามเขาว่า พี่คับถ้าเขียน PHP แล้วไม่เขียน OO นี่ล้าหลังไหม ก็ตอบเป็นเสียงเดียวกันว่า ชัวร์ ของตายแน่นอน ก็อ่านะ ก็ เป็นคนแบบว่า ชอบดื้อด้านไง ก็เลยไม่สนใจที่จะทำ OO ซักเท่าไหร่ ไอ้เรา ก็ นะเีรียนจบ ก็เขียนเวบเป็น เพราะตอนนี้ก็ดูแลเวบบิท ที่นึงอยู่ งุ่นกับมันมา 2-3 ปีและ ก็เขียนแบบถึก Include กระจาย แบบว่านะเวลาแก้ที ก็ ชิหายครับพี่น้อง

เมื่อเรียนจบ ก็ เออไปเข้าทำงานที่บริษัทนึง ก็ไม่ได้คิดไร ก็เออ เห้ยเค้าก็รับ PHP Programmer ก็น่าสนใจดีนะครับ ก็น่าเข้าไปเพราะเงินก็โอเค ( เด๋วนี้ พี่แก เอาไปครองซะเยอะเลยนะ .net เนี่ย ) ก็เลยเข้าไป เข้าไปซักพัก เอาแล้วไง OO มันมาแล้ว ไม่รู้เรื่องอย่างแรง ประจวบ เหมาะ กับโดน PHP Framework อย่างจัง มันก็คือเจ้า Symfony Framework นี่แหละ บ้าพลังมาก ยากโคตรๆ สำหรับลิง

 ลิงใช้เวลาเรียนรู้กับมันด้วย ตัวเองเป็นเวลาเกือบ 2 เดือนถึงจะเข้าใจและเขียนเวบ ได้เรื่อยๆ ยิ่งเขียนยิ่งชอบ เพราะ มันมีอะไร แปลกๆ เยอะดี แบ่งแยกให้เป็นสัดส่วนแล้วก็ Manaul เอง ได้เยอะ โดยเฉพาะ Cache นี่แหละ ยิ่งชอบ นักและ แถม ไม่ต้องกลัว เรื่องของ Security มากเท่าไหร่นัก เพราะ เจ้าหล่อนมีให้หมด

 มาพูดกันก่อนเลยว่า หล่อนคืออะไร (Symfony)

 Symfony Framework :- เป็น PHP Framework ตัวนึงที่มีประสิทธิภาพสูงผลิตโดยคนฝรั่งเศส จำชื่อไม่ได้และ อยากรู้ไปดู Wiki เอาชิ่วๆ เป็นลูกผสมระหว่าง Mojavi แล้ว ก็ Rails พูดไปงั้นแหละก็ไม่ค่อยรู้ เท่าไหร่ เพราะไม่เคยจับ Framework ตัวอื่นนอกจาก Code Ignitor << ก็ดีอยู่เร็วด้วย ง่ายด้วย Doc ยอด :) เปลี่ยนเรื่องซะและ ต่อๆๆๆ สำหรับ เจ้าตัวนี้เนี่ย ก็จะเป็นการมองแบบ MVC นะครับผม ถ้าจะให้เอาง่ายๆ ตามแบบของ Symfony เลยก็

M = Model :- แปลตามความเข้าใจคือ ส่วนของที่มีการเชื่อมต่อกับ Database ซะเป็นส่วนใหญ่ ก็หลักๆก็จำไว้เท่านี้ไว้เด๋วมาพูดกันต่อไปมีเยอะๆ

V = View :- ง่ายๆไว้โชว์ สิ่งที่คำนวนออกมา มาให้คนอื่นดู

C = Controller :- เอา Input ที่ได้ หรือเป็น ส่วนที่ใ้ช้จัดการ เรื่องของ Algorithm และแสดงผลไปยัง View เด้อ

 ถ้ามองแบบ 3 Tiers ( ไม่รุ้สะกดถูกเป่า ) ก็ จะได้ว่า

Application tier = View

Business tier = Controller

Data tier = Model

 มองงี้จะได้ง่ายๆ ส่วน หลักที่ผมใช้เผื่อจะได้สะดวกๆ ในการใช้งานคือ  ( จำเป็นตัวอย่างแล้วกันจะได้ง่ายๆ )

Ex. สมมติ 1+1=2 แล้วเราอยากให้ดึงคำว่า Two มาจาก Database ฮ่าๆ ง่ายๆ มาดูกัน

เริ่มต้นจาก Controller ทำการเขียน ฟังชั่นเพื่อบวก 1+1=2 แล้วให้ ดึงข้อมูลจาก Model ไปหาใน Model ว่าเอ้ยยย 2 เนี่ย มันหมายความว่า ไร ก็จะได้ Two ชิมิ แล้วให้ เอา Two ไปแสดงผลที่ View :) ง่ายมะ งงอ่าเดะ ถ้างง ค่อยไป อ่านต่อ ในบท ต่อๆไป กั่กๆ

 จิงๆ แล้ว งานส่วนมากเนี่ย ใน Controller จะเป็นตัวดึง Model มาใช้ ร่วมครับ คือเอา ง่ายๆ เหมือน Model มันอยู่เฉยๆ ให้ Control มาเรียกมันนั่นแหละ แล้วค่อยเอาผลลัพธ์ ส่งออกไปโชว์

 

ผ่านมา แค่นี้ อาจจะ งง กันได้ ลิงว่า ไว้บทต่อๆไป มา อ่าน เป็น Shotๆ ไป ดีกว่าเนอะ

 

ลิง พยายาม จะแปล จาก หนังสือ ของ Symfony มาแล้วกันจะได้เป็นเรื่องเป็นราวนะครับบบ

 

ก่อนจากกันในบทนี้ มาดูว่า Symfony มี Feature อะไรแนวๆ บ้าง สำหรับ คนบ้า PHP นะงับ ( ก๊อบเค้ามาเด๋วส่งเสริม )

  • simple templating and helpers  - มีการสร้าง Templating ให้คือสามารถสร้าง Template ให้คุณโดยอัตโนมัติ และ แน่นอน มี Helpers ให้ใช้ลึ่ม แบบ ว่า พิม 2-3 คำก็ได้ อะไรเท่ๆ ออกมาและ ( แต่ก็ ต้องมี Helper เสริมจากเวบหลักเหมือนกัน มีให้เลือกใช้เยอะ )
  • cache management - ตัวนี้ก็เด็ดแล้วครับ จัดการ Cache ในระดับ Action ( ใน Controller ) สามารถ จัดการ Cahce ได้ถึงลูกถึงคนเอากันแรงไปเลย
  • smart URLs - สำหรับคนทำ Seo สบายครับ Bot จากพวก Seach หาง่าย อ่านคล่อง :)
  • scaffolding - มีตัว Generate หน้าต่างๆ จาก Model สร้างหน้า Admin พร้อมจัดการ Database โดยไม่ถึง 10 นาที ( ทำได้ไง ~ เด๋วรุ้กัน )
  • multilingualism and I18N support - อันนี้ก็สุดยอด สามารถเปลี่ยนภาษา ไทย อังกฤษ จีน หรือ เขมร ( อันนี้ไม่รุ้ ฮ่าๆ ) ได้ แปบ เดียวแทบ ยังมี จารจัดการ เรื่อง Culture เช่น รูปแบบ เวลา หรือ วันที ตาม หลักของแต่ละประเทศ แบบง่ายๆ สะดวก
  • object model and MVC separation - อันก็ ของตายอยู่แล้วงับ จิงๆ ถ้าไม่รุ้เรื่องมาก ก็ขอให้ มี เรื่องของ Basic พวก Function ก็พอไปได้
  • Ajax support - อันนี้ ถือว่า ยอดครับ เพราะใช้ Ajax Framework ของ Prototype Update กันเอง ง่ายๆ เอาไฟล์ไปวางทับก็ได้และ แถม มี Helper ให้ใช้ Prototype แบบว่า ขี้หมูขี้หมา ก็ทำได้ เน้อ แบบ ว่า กด ปุ๊บ แว๊บๆ สีค่อยๆ หาย เปลี่ยนสี ชิวๆ พิมแค่ 2-3 บรรทัด หรือ พิมใส่ Text box กด Ok แล้วไปโชว์ ด้านข้าง แบบ ค่อยๆ แว๊บเข้ามา ก็ได้งับ ง่ายๆ สะดวกรวดเร็ว
  • enterprise ready - อันนี้ อย่าคิดว่า Java หรือ .net ทำได้ อย่างเดวเน้อ เพราะ Framework PHP เค้าไปไกลแล้ว เพราะการจัดการแบบ Framework แล้ว ก็ด้วย Feature ที่รองรับการ ทำอะไร แปลกๆ ก็มี เยอะ แล้ว ปัญหาเรื่อง Secure หรือ ความเร็วก็ไม่ใช่ปัญหา งับๆ :) อย่าติดกับ โฆษณา มากนัก ลอง มาดูแบบ ของฟรีๆ แล้ว จะหนาว~ พูดมากไปเป่าเนี่ย :) ขอโทษ ถ้ารบกวน นะครับ .net , Java Programmer