CodeIgniter ไม่ใช่ Framework ที่ดี !
หลังจากผมเป็นคนแนะนำผ่าน 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 ได้จากชุมชนแห่งนี้ครับ
| Tweet |
เนื้อหาคล้ายกันที่น่าสนใจ

CI นั้นมักจะ claim ว่าตัวเองเร็วมาก
เห็นด้วยกับ จขบ. ครับว่ามันเร็วเพราะมันใส่ของเล่นมาให้นิดเดียว เอิ้กๆๆ
มุมมองในการพัฒนา codeigniter นั้นไม่น่าจะเหมือนพวก rails นะครับ
ผมมองว่า codeigniter เหมือน framework ที่ช่วยให้เราเริ่มต้นได้ง่ายขึ้น(และเป็นระบบมากขึ้น)
ถ้าให้เปรียบ codeigniter ก็เหมือน infrastructure น่ะครับ
ส่วน rails เนี่ย น่าจะเหมือน platform มากกว่า
เห็นด้วยอย่างแรงครับ แต่ปกติแล้ว Developer ส่วนใหญ่มักจะหา framework ที่มีลักษณะเป็น platform มากกว่าเพราะไม่ต้องยุ่งยากมานั่งต่อเติมให้ลำบาก แต่ผมชอบ CodeIgniter เพราะเริ่มต้นง่าย ต่อเติมได้ง่ายแล้ว ทำได้อย่างที่ต้องการ
เยี่ยมครับ ชอบบทความนี้ ^^
ว่าจะลองใช้ดูเหมือนกันค่า
อ่านแล้วรู้สึกว่าจะสนใจ codigniter แล้วละซิเรา
ตรงครับ ผมเลือกใช้ ci เพราะเหตุผลทั้งหมดนี่ละครับ
มันไม่ใช่ php framework พร้อมใช้อย่าง cake หรือ ruby แต่เราต้องเสริมเอง ซึ่งสามารถกำหนดข้อตกลงในการเขียนโค้ดเองได้เข้ากับการทำงานได้ดีครับ
ดีครับ ขอบคุณมาก ๆ ครับ ผมมือใหม่ อยากศึกษาเรื่อง framework พอดี
น่าจะเป็นจุดเริ่มต้นที่ดี
เห็นด้วยว่า ci อาจจะไม่ใช่ framework ที่ดี แต่ก็ง่ายต่อการศึกษาเรียนรู้ในเบื้องต้น ตอนนี้ก็สนใจ yii เพราะเคลมว่าเร็วมากๆ แต่เมื่ออ่านคู่มือแล้วยอมรับครับว่ายากต่อการเรียนรู้ทีเดียว
เห็นด้วยครับ ผมดู framework มาหลายตัว แต่ละตัวแม้จะมีข้อดี แต่ก็ต้องพยายามจดจำรูปแบบใหม่ๆมากเกินไป แต่ ci ดูแล้วใช้งานง่ายกว่า ใช้ความรู้สึกการเขียน Php แบบเดิมๆ มาใส่ใน mvc ทำให้เข้าใจได้ง่ายกว่า
ตอนผมเริ่มใหม่ๆก็ CI นี่แหละครับ ตอนแรกไม่รู้หรอกว่ามันเร็ว รู้อย่างเดียวว่า Document มันอ่านง่ายมากๆ จับจุดได้เร็วจากที่ไม่รู้เลยว่า MVC คืออะไร ฮ่าๆๆ
ผมเป็นคนที่ชอบทำ Framework ของตัวเองตั้งแต่สมัยจบมาทำงานใหม่ๆ
เนื่องด้วยเพราะว่าการเรียนรู้ Framework ที่มัน full stack จริงๆ จะเสียเวลามาก (สำหรับคนเพิ่งเริ่มโปรเจคที่ไม่มีคนแนะนำด้วยแล้ว บางทีมันมากกว่าตัวโปรเจคที่ต้องเองอีก)
การมี Framework เป็นของตัวเองทำให้ค่อยๆ เพิ่ม ในสิ่งที่ยังขาดของแต่ละส่วนของ requirement ได้ง่ายกว่าเยอะนัก
มาวันนี้วันที่เลิกใช้ Framework ของตัวเองแล้ว ย้อนกลับไปดู Framework ที่สร้างไว้ …. กรูทำไปทำบ้าอะไรฟร่ะ
ทุกวันนี้ข้อดีของการทำ Framework เองที่ผมเรียนรู้มาคือ “อย่าทำเป็นดีที่สุด”
Codeigniter ดีแต่ไม่น่าใช้ เคยใช้อยู่พักหนึ่ง
แล้วเทียบกับ Yii ไม่อยากบอกเทียบไม่ติดเลย
Yii มีระบบ Generator code ทำให้ code มีลักษณะใกล้เคียงกัน ทำให้อ่าน code ของคนอื่นได้งาน
Model ของ Yii เจ๋งกว่า สามารถกำหนดเหตุการก่อนหลัง เช่น ก่อน save ลงฐานข้อมูล หลังจาก save แล้ว หรือ ก่อน ลบข้อมูล หลังลบข้อมูล อันนี้มีประโยชน์มาก มี scrope,behaviors ทำให้มองทุกอย่างเป็น object มากขึ้น
มี widget อันนี้คล้ายกับ plugin แต่ทำงานร่วมกับ css javascript มี php หรือ class อื่นๆ ได้
ไม่ได้ดู Yii นานละกลับไปดูตอนนี้น่าสนใจกว่าแต่ก่อนมากๆ Document ทำดีขึ้นเยอะเลยมี wiki ด้วยไว้ต้องไปลองใช้