CodeIgniter, the most simple

Posted by PunNeng, Thu Jan 18 16:43:00 UTC 2007

AMp เขียนครับ

...จากที่ tonkla ได้แนะนำผมให้ลองไปดูๆ CodeIgniter ไหนๆ ก็ว่างละ ลองเอามาดูๆ หน่อยดีกว่า

CodeIgniter (เรียกย่อๆ ว่า CI) เป็น php framework ที่สนับสนุนทั้ง php4 และ php5
ลองเข้าไปอ่าน overview มันแล้ว ดูเหมือนว่า คนสร้าง CI นี่่จะเบื่อ framework ทั้งหลายที่... ...เข้าใจยาก (ใช่เลย) ...Doc ห่วยแตก บอกไม่หมด (ถูกต้อง) ...ใหญ่และช้า (ถูกอย่างที่สุด)

ก็เลยทำ framework ที่อ่านง่าย ไม่ซับซ้อน และ เร็ว!! อย่าง CI นี่ขึ้นมา

เมื่อก่อน ตอนที่ผมเล่น Cakephp ก็บ่นให้ไอ่เหน่งฟังเรื่องพวกนี้แหละ ก็ว่าน่าจะลองทำ framework ดูเองมั่ง แบบว่าตัดไอ้ที่ไร้สาระทิ้งให้หมด เน้นทั้งความเร็วในการพัฒนาและระบบ รวมถึงการ customize ด้วย

พอมาดู CI ... เฮ้ย มันใช่เลยจ๊อจจจจจ ไอ่นี่แหละ ที่อยากจะทำ (แต่มันทำไปก่อนแหล่ววว - -')

จาก framework ที่เล่นๆ มา ผมเทคะแนนให้ CI นี่เยอะสุดเลย มันน่าสนใจมากๆ สำหรับพวกที่คุ้นกับ hard coding มาแล้ว เพราะพวกนี้นี่เวลาทำอะไรต้องได้ดั่งใจ และ CI ก็ตามใจเราซะเยอะ และในเวลาที่เราขี้เกียจ ก็สามารถย้ายไปใช้ lib ต่างๆ ที่ติดมากับ CI ได้อีกด้วย

ขี้เกียจอธิบาย สรุปเลยดีกว่า CI เจ๋งยังไง

  • ไม่ได้ map ระหว่าง Control กับ Model ให้ ทำให้การออกแบบระบบยืดหยุ่นขี้นเยอะ เพราะบางทีเราสร้าง controller มาทำงานแบบ batch ที่ไม่ได้มี table ใช้งาน
  • เลือกได้ว่าจะสั่งโหลดโมเดลเองหรือใช้ autoload (fix)
  • เลือกได้ว่าจะเอา view ไหน เพราะ view ทั้งหมด เป็น view แบบ global ไม่ได้เจาะจงว่า view ไหนของใคร
  • ใช้งานง่ายจริงๆ ตัว CI นี้ไม่มี Tutorial แบบ text มาให้ (มีแต่ vdo ซึ่งผมโหลดมาดูไม่ได้ โดนบริษัทบล็อก) แต่ถึงไม่มี ผมก็ยังงมได้อย่างไม่ยากเย็นนัก (ไม่เหมือน symfony ถ้าไม่มี tutorial มาให้ ผมคงเอ๋อไปอีกนาน)
  • ระบบ automation น้อยมาก ฉะนั้น โคตรเร็ว!!!

เอาล่ะ ถ้าพูดถึงเรื่องความเร็ว คงต้องวัดกันซะหน่อยว่ามันเร็วกว่า symfony ตรงไหน การทดสอบนี้ ผมพยายามทำให้ทั้ง 2 app ที่สร้างจาก 2 framework นี้ทำงานใกล้เคียงกันที่สุด และรันใน environment เดียวกัน (Apache 2.0.59) ด้วยคำสั่งของ apache ดังนี้ ab -c 10 -t 60 http://localhost

ผลสรุปว่า

Symfony ทำได้ 7.91 transaction/sec
CodeIgniter ทำได้ 24 transaction/sec
Pure Coding ทำได้ 400 transaction/sec

จำนวน transaction/sec ที่ได้นี้ เป็นเครื่องผมนะครับ อาจจะต่ำไป ก็อย่าไปซีเรียส แต่ที่น่าสนใจก็คือ CI เร็วกว่า Symfony ถึง 3 เท่า!!!

ชม CI มาเยอะละ ดูจุดบอดมันมั่งดีกว่า
อย่างแรกเลย CI ไม่มี ORM ครับ ทำงานกับ query ล้วนๆ (มีบางฟังก์ชั่นเพิ่มเข้ามาช่วยให้ไม่ต้องทำงานกับ query โดยตรง แต่ก็ไม่ถือว่าช่วยอะไรนัก) ผมว่า ถ้า CI เพิ่ม ORM เข้าไป ก็ไม่น่าจะทำให้ช้าลงแต่อย่างใด แต่จะช่วยโปรแกรมเมอร์ได้มากกว่านี้แน่ๆ ในงาน CRUD ทั่วๆ ไป (ส่วนงาน enterprise ก็ manual query เอาให้ optimize กันสุดๆ ไปเลย)

ต่อมา ในส่วนของ view นั้น ยังไม่เวิร์กเหมือนกับ symfony cache ทำได้ในระดับ action ของ controller เท่านั้น แล้วก็ลูกเล่นของ view นั้นน้อยมาก โดยจะมองเหมือนว่าไฟล์ view 1 ไฟล์เนี่ยคือ 1 หน้าเลย ถ้าสมมุติว่าอยากจะแทรก data อะไรเพิ่มเติมนอกเหนือจากนั้นก็ manual เอาในไฟล์ view เองเลย และถ้าจะทำเป็น section template ก็ include เอาเองเหมือนกัน ไม่มี element ให้ใช้เหมือน cakephp (ไม่แน่ใจว่า symfony เป็นเหมือนกันป่าว)

อีกจุดนึงอยู่ที่เรื่องการ resume session อย่างในกรณีที่ process form แล้วมี error ซึ่ง CI ไม่ได้ map model เข้ากับ controller ดังนั้น จึงไม่มีการ auto validate และไม่มี auto resume ด้วย ทำให้เราต้อง validate และจัดการ resume เอง (ถึงจะต้องทำเอง แต่ก็ง่ายกว่าเขียนเองเพียวๆ เยอะ)

จุดบอดจุดที่ 4 แบบเป้งๆ เลยก็คือ ไม่มี Ajax ต้อง manual เอาเองเหมือนกัน แต่ถ้าไม่ใช้ ก็คงไม่มีปัญหา

สรุปเลยว่า CI นี่เหมาะมากสำหรับ

  • งาน Enterprise
  • งานที่ต้องการ performance ดี และพัฒนาได้เร็ว
  • คนที่ชอบ hardcoding
  • คนที่อยากลดงานในการพัฒนาที่ไม่จำเป็น

CodeIgniter ผมให้เป็นอันดับ 1 ของ framework php ที่น่าใช้ที่สุดครับ และยิ่งไม่ได้มี plan ที่จะใช้ ajax อย่างหนักๆ ใน app แล้วล่ะก็ ใช้ CodeIgniter ไปเลยครับ

แต่ถ้าอยากได้ลูกเล่นแพรวพราวพร้อม Ajax ก็ต้องเลือก Symfony ล่ะครับ

หรือถ้าอยากได้ลูกเล่นแพรวพราว แต่โฮสเป็นแค่ php4 ก็เลือก CakePHP เป็นตัวเลือกสุดท้ายได้เลยครับ

ป.ล. ขอบคุณ tonkla มากครับ ที่แนะนำให้ลองเล่น CodeIgniter, ตอนแรกผมไม่เล่นตัวนี้เพราะเว็บของ symfony สวยกว่าครับ ^^''

แก้ไขล่าสุด วันที่ 23 กรกฏาคม 2550 เวลา 23.58 น.

Filed Under: General | Tags: codeigniter framework php

Comments

  1. ตูน 01.23.08 / 14PM

    เราต้องการคนทำ website ตัวนี้แบบต่อยอดจากส่วนที่ค้างงานอยู่ โดยใช้ระบบปฏิบัติการของ codeigniter นี่เอง เบอร์โทร 081-9125385 (ด่วนๆ)

Have your say

A name is required. You may use HTML in your comments.




codegent: we're hiring