Symfony คืออะไร ทำไมไม่เป็นที่นิยมในไทยกันนะ ?

ชาว PHP dev ในไทยของเราไม่มีใครไม่รู้จัก PHP Framework Laravel สุดโด่งดัง ณ ขณะนี้ หรือไม่ก็ Codeigniter ที่เคยโด่งดัง ถึงแม้ว่าตอนนี้จะเริ่มมีความนิยมลดลงไปบ้างแต่ก็ยังมีไม่น้อยที่ยังใช้อยู่ แต่… จะมีสักกี่คนที่รู้จัก PHP Framework Symfony

งั้นเราลองมาทำความรู้จักมันก่อน

จาก https://symfony.com ได้นิยามไว้ 2 อย่างคือ

1. Symfony is a set of reusable PHP components

ทางเว็บเค้าบอกว่า Symfony เป็นกลุ่มของ PHP components ที่สามารถใช้งานซ้ำได้ ? มันคืออะไรกันแน่ ?

จริงๆ แล้วไอ้ Components ที่ว่ามันคือ Library ที่เขียนขึ้นมาเพื่อทำหน้าที่อย่างใดอย่างหนึ่ง ตัวอย่างเช่น Symfony/Console เป็น component ที่มีหน้าที่จัดการเกี่ยวกับการเขียนโปรแกรมให้รันบน Command line ที่ไม่ใช่ Web server หรือ Symfony/VarDumper เป็น component ที่มีหน้าที่จัดการเกี่ยวกับการ Debug ตัวแปรใน PHP ให้ Developer อย่างเราๆ ทำงานได้ง่ายขึ้น

Symfony มี components มากกว่า 50+ ซึ่งสามารถดูได้จากที่ https://symfony.com/components

ซึ่งหมายความว่า Symfony ยังไม่ใช่แค่ PHP Framework เหตุผลเพราะว่า คนที่ไม่ได้ใช้ Framework Symfony ก็สามารถนำ component ของ Symfony ไปใช้ในโปรเจคของตัวเองได้เช่นกัน และในปัจจุปันแต่ละ component ก็ถูกนำไปใช้ทำ Framework อื่นๆ ด้วยเช่นกันตัวอย่างเช่น Laravel จริงๆ แล้วก็แอบใช้ของ Symfony เยอะอยู่เหมือนกันนะ

2. Symfony is a PHP framework for web projects

ที่พวกเราเข้าใจกัน Symfony ก็คือ PHP Framework สำหรับทำเว็บนั่นเอง แต่เอาเข้าจริง มันก็คือการนำ Components ข้างบนมายำรวมกันกลายเป็น Framework ตัวนึงนั่นเอง


ทีนี้เราพอรู้แล้วว่า Symfony คืออะไร แล้วมาถึงคำถามที่ว่า ทำไมถึงไม่นิยมในไทยกันนะ ?

ในประเทศไทย PHP Dev หลายๆ คนอาจจะไม่รู้จัก Symfony ด้วยซ้ำ… แอบเสียใจ T_T ทั้งๆ ที่ของเค้าออกจะดี อ่ะมีอะไรมาให้ดูเล่นๆ

กลุ่มของ Laravel บน facebook
กลุ่มของ Codeigniter บน facebook
กลุ่มของ Symfony บน facebook

echo str_repeat(‘5’, 10000) . ‘+’; อยากจะขำออกมา ดูเอาเถอะว่ามันช่างแตกต่างกันแค่ไหน ทีนี้เราลองมาดูของต่างประเทศกันบ้าง เอาเข้าจริงแล้ว Dev ต่างประเทศก็ใช่ว่า Symfony จะชนะ Laravel ซะเมื่อไหร่ จากผลโหวตบน Twitter

แต่ว่าอย่างน้อยมันก็พอสูสีได้บ้าง ไม่ใช่ต่างกันสะขนาดนั้น ซึ่งในผลโหวตข้างต้นก็มีการ discuss ที่น่าสนใจต่างๆ นาๆ ลองไปอ่านต่อได้ที่ https://twitter.com/RJMackenzie_/status/1064536053602750464

กลับเข้าเรื่องของเรา ทีนี้ทำไมล่ะ ถึงไม่เป็นที่นิยม อันนี้วิเคราะห์ด้วยความคิดเห็นส่วนตัวแล้วกันนะเริ่มจาก

1. คอมมูนิตี้

เรื่องนี้สำคัญมากๆ ถึงมากที่สุด เคยได้ยินไหม Community Driven ซึ่งยิ่งจำนวนคนใช้เยอะ ก็จะมี Library เยอะ และจะเจอปัญหาเยอะ พอเจอปัญหาเยอะ ก็จะมีวิธีแก้เยอะ นั่นแปลว่าเรา Search google ไปยังไงก็มีคนที่เจอบัคแบบเราอยู่แน่นอน

2. ความสวยงาม ความง่าย ความรวดเร็ว

ที่พูดถึงนี่คือในแง่ของ DX (Developer Experience) หรือว่าในแง่ของพวก dev เช่น ความสวยงามของ Code ของ Laravel นั้นช่างสวยงามสุดจัดปลัดบอก ขนาดบางคนลาออกจากการเขียน PHP ไปยังกลับมาบอกว่าสุดจัด รวมไปถึงความใช้ พวก Facade, Static method นั้นง่ายจริง เรียกที่ไหนก็ได้ และ Model ที่ทำได้ทุกอย่างเรียกได้ว่าครอบจักรวาล มันสะดวกต่อพวกเราๆ เสียจริง แต่มันก็เป็น Anti-pattern อยู่นะ แต่ Symfony เนี่ย ค่อนข้างซีเรียสกับการเขียน Code แบบต้องทำตามหลักการ SOLID หรือ Design-pattern พอสมควร ทำให้บางครั้งแทนที่จะเขียนจบในไฟล์เดียว อาจจะต้องมีหลายไฟล์ หรือทำหลายสิ่งบ้าง อาจจะรำคาญอยู่บ้าง แต่มันก็มีข้อดีนะ ไว้เดี๋ยวจะเล่าให้ฟังในบทความหน้าๆ

3. Learning curve ค่อนข้างสูง

พูดสั้นๆว่า Symfony มันเรียนรู้ยากกว่า Framework ตัวอื่นๆ กว่าจะนำมันมาใช้งานได้อย่างมีประสิทธิภาพก็ต้องเรียนรู้เยอะพอสมควร แต่ถ้ารู้จักมันดีแล้วละก็ จะหยิบจับจะทำอะไรก็ง่ายไปหมดจริงๆ


นั่งคิดสักพักนึกไม่ออกว่ามีอะไรอีก นั่นแปลว่าหลักๆ ก็มีเท่านี้แหละ

สรุป

  • ไม่มี Framework ตัวไหนดีที่สุด เพราะขึ้นอยู่กับหลายปัจจัย ไม่งั้นก็เถียงกันไม่มีที่สิ้นสุด
  • ที่เล่ามาข้างบนเห็นแต่จุดด้อยของ Symfony เดี๋ยวไว้จะมาเล่าจุดเด่นๆ ให้ฟังแต่ว่า 100 บทความก็น่าจะไม่จบ

ไว้เจอกัน สวัสดี..