หลังจากผมเป็นคนแนะนำผ่าน Blog นี้ว่า CodeIgniter นั้นดีหนักหนา และเหมาะสมที่จะเรียนรู้ แต่ไหงวันนี้มากลับคำพูดตัวเองแบบนี้ละ ที่จริงไม่ใช่อะไรหรอกครับผมตั้งหัวข้อชวนคิดว่าจริงๆแล้ว CodeIgniter มันดีจริงหรืิอ ? ถ้าผมหยิบประเด็นมาพูดจริงๆ มีหลายเรื่องที่ CodeIgniter ยังไม่ถือว่าดีหนัก และมีอีกหลายเรื่องที่ CodeIgniter ทำได้ดีมาก เอาละครับวันนี้ผมก็มาเผา CodeIgniter พอประมาณกันหน่อยดีกว่า (ขนาดเปิดเว็บ CodeIgniter.in.th แล้วไหงมาเผาซะงั้น แล้วใครจะใช้เนี้ย)
- การเขียนโค้ดยังขาด ความรวดเร็วในการเขียนถ้าเทียบกับ CakePHP หรือข้ามรุ่นอย่าง Ruby on Rails
- ไม่มีการทำ “ข้อตกลงในการเขียน” (Convention over configuration) ทำให้ Developer ทำงานได้ตามใจชอบซึ่งมันมีดีและไม่ดีอยู่เหมือนกัน
- CodeIgniter ไม่ใช่ Full-stack framework ทำให้ดูขาดๆต้องหาส่วนมาเติมเต็มไม่มากก็น้อย ไม่ว่าจะเป็น ORM , AJAX หรืออื่นเช่น Auth and ACL
- ไม่มีตัว Generator ที่ช่วยทำหลายๆอย่างให้แกเราอย่าง CakePHP หรือ Ruby on Rails
- ตัวช่วยหลายๆตัวยังดีไม่พออย่างเช่น Active Record ถึงแม้ว่าจะดีแต่ก็ยังไม่ง่ายที่จะเอาไว้เรียกใช้ (ต้องทำเอง)
เอาละครับว่ากันไปหอมปากหอมคอ เสร็จแล้วผมจะมาพูดในอีกมุมมองหนึ่งละกันครับ ว่าในการที่มันไม่มีอะไรเนี้ยและที่ทำให้มันสุดยอด ไม่ใช่แค่ดี 55+ (ด่าก่อนแล้วขายของ) แล้วมันดียังไงละ หลายคนอาจจะไม่เห็นด้วยกับสิ่งที่ผมกำลังจะบอก แต่ผมมองว่านี้คือจุดแข็งของ CodeIgniter อย่างแท้จริง และทุกคนก็อยากใช้มันเพราะสิ่งนี้
- CodeIgniter มีระบบ Hooks ซึ่งยอมให้เราเปลี่ยนแปลง หรือทำบางอย่างซึ่งไม่ต้องยุ่งกะตัวระบบโดยตรง ทำให้พัฒนาต่อยอดได้ โดยยังไม่กระทบระบบ CodeIgniter
- อิสระที่จะทำอะไรยังไงก็ได้ และง่ายต่อความเข้าใจ เพราะไม่มี “ข้อตกลงในการเขียน” ทำให้โค้ดส่วนใหญ่อยู่ในคู่มือและใช้ PHP ธรรมดา ไม่ต้องเรียนรู้และจำข้อตกลง
- สามารถต่อเติม Library ต่างๆเข้าไปได้อย่างง่ายดาย และเข้าใจง่าย และไม่มีการบังคับโดยตรง มีเพียงการแยก folder เพื่อบ่งบอกมาให้แล้วแค่นั้น แต่ไม่บังคับ เช่น library กับ helper (จริงๆมันมีหลักในการเขียนอยู่ซึ่ง ใน Ruby on Rails จะใช้ Helper ใน view โหมดและ library ใช้ใน controller แต่ตอนหลัง ก็มีการทำให้สามารถใช้ helper ใน controller ได้ซึ่ง CodeIgniter ทำแบบนี้แต่แรก)
- ความอิสระที่จะโหลด view ยังไงก็ได้ตามใจชอบ ซึ่งทำให้คนเขียน/คนมาอ่านต่อเข้าใจได้อย่างชัดเจน ซึ่งส่วนนี้ถ้าเกิดมีข้อตกลงมันจะดีคือเขียนน้อย แต่อาจจะงงถ้าศึกษามาไม่ดีพอ
- เอกสารที่ดี ทำให้มือใหม่ศึำกษาได้รวดเร็ว และไม่จำเป็นต้องรู้สิ่งอื่นๆมากๆตามมา
- ถึงแ้ม้ไม่มีระบบที่ติดมาอย่างมากมาย แต่เราสามารถติดมันเองได้ ซึ่งเสียเวลาก็จริง แต่ทำให้เรารู้แน่ชัดว่าระบบเราต้องการใช้อะไรบ้าง และให้เรามีสิทธิเลือกตัวที่จะมาใช้งาน
อะพอหอมปากหอมคอที่ทั้งด่้าและชม อย่างเต็มปากเต็มคำ แต่ที่สุดของ CodeIgniter ไม่ใช่การใช้ CodeIgniter ในความคิดผมมันคือการทำ Framework ของตัวเองโดย CodeIgniter !!! ซึ่งสิ่งนี้ผมว่าเจ้าตัวอื่นๆสู้ได้ยากเพราะไม่มีอิสระ ซึ่งเรียกว่า Framework พร้อมใช้นั้นเอง ในกรณีของ CodeIgniter จะเรียกพร้อมก็ได้ แต่จริงๆผมว่ามันยังแค่เกือบพร้อม เพราะยังขาดหลายอย่างซึ่งต้องต่อเติมเอง แต่ด้วยความมันเป็นแบบนี้ นี้และทำให้เราทำ Framework ของตัวเองได้อย่างสนุกสนานทั้งมี Hooks , ต่อเติม Library , ไหนจะยังสามารถรวม library เจ๋งๆอย่าง Zend และอื่นๆมาใช้งานได้อีก แล้วมีผลต่อองค์กรอย่างไรหรอครับ
คุณทราบไหมว่าปกติแล้วองค์กรส่วนใหญ่ชอบทำ Framework เป็นของตัวเอง ? หลายๆที่ทำงานที่ผมเคยได้ไปทำมานั้นมีการใช้ Framework เป็นของตัวเองทั้งนั้นซึ่งมีทั้งพัฒนาเองหรือไปต่อยอดจากตัวอื่นก็มีมาก (ผมทำมา 4 ที่ก่อนล่าสุดตอนนี้จะอยู่กับ Duocore พาร์ตไทม์นะครับ) แล้ว CodeIgniter ก็หยิบยื่นโอกาสง่ายที่จะสร้าง Framework ของตัวเองให้เป็นเรื่องง่าย ไม่แพ้ Zend รวมกับความเร็วที่มีอยู่และ library อันน้อยนิดทำให้ความเร็วก่อนจะโมอยู่ในผลลัพธ์ที่น่าพอใจมาก , ความเร็วในการเขียนโค้ดซึ่งใช้ได้ แต่ยังไม่เร็ว ทุกอย่างดูกลางๆไปหมดแล้วแต่คุณจะเลือกทางเดินของ Framework คุณว่าจะเดินไปทางไหน แล้วคุณจะลดอะไร?
ถ้าให้เปรียบเทียบง่ายๆถ้าใครเคยเล่นเกม Ragnarok ตอนเริ่มสร้างตัวละคร คุณต้องเลือกสักทางว่าจะ up STR แล้วต้องเสีย INT ทำนองเดียวกัน ถ้าจะสร้าง Framework ที่เน้นการเขียนโค้ดน้อยๆได้ผลลัพธ์เยอะๆ บางครั้งประสิทธิภาพมันก็อาจจะช้าก็เป็นได้ แต่สุดท้ายคุณมี “อิสระที่จะคิด จะทำได้” นี้และคือความสุดยอดของ CodeIgniter อิสระที่เพียงพอ และกรอบที่ให้พึงพาได้ วันนี้มาขายของพอแล้วอย่าลืมติดตามเรื่องราว CodeIgniter ได้จากชุมชนแห่งนี้ครับ
Codeigniter.in.th