step0 CodeIgniter ทำงานอย่างไร

step0 CodeIgniter ทำงานอย่างไร

เริ่มต้นจากคนที่ไม่ทราบว่า CodeIgniter มีอธิบายไว้แล้ว CodeIgniter คืออะไร

บทความนี้ เราจะมาศึกษาการทำงานของ CodeIgniter โดยละเอียด อย่าพึ่งเบื่อนะครับ เพราะว่ามันมีความสำคัญพอสมควรเลยในเรื่องนี้ เนื่องจากว่า มันจะเข้ามาเปลี่ยนรูปแบบการเขียน php html ของเดิมที่เราเคยเขียน เคยใช้กันมา ความต่อเนื่อง การรับส่งค่าของระบบ เปลี่ยนไปเยอะพอสมควร ดังนั้น ถ้าไม่เข้าใจในเรื่องนี้ ก็งงต่อไปอีกยาวครับ และ มันจะเปลี่ยนแนวคิด การทำงานของ PHP แบบเดิมที่คุณเคยรู้ไปได้เลย

การเขียน PHP โดยทั่วไป

จะขอเรียกว่าเป็นแบบเก่านะครับ เพราะว่าเป็นแบบที่ทุกคนเขียนกัน และเป็นแบบที่สอนเขียนกันตามหนังสือทั้งภาษาไทย และภาษาอังกฤษ เรียกได้ว่า น่าจะเกิน 90% ก็เขียน และทำงานแบบนี้แหล่ะ

เวลาที่เราเขียน php เราก็จะสร้างไฟล์ขึ้นมา เพื่อให้ทำงานตามที่เราต้องการ และถ้าหากว่า หน้าเว็บนั้นมี form อยู่ภายในด้วย ก็จะเริ่มมีคนเขียนแตกต่างกันไปอีก เพราะว่าบางคนจะสร้างหน้าแรก มีแต่ form แล้ว submit ส่งค่าให้หน้าที่สอง ซึ่งเป็นหน้าคำนวน แต่บางคนอาจจะ submit ส่งค่าให้กับหน้าตัวเอง ที่กำลัง แสดง form อยู่เลย โดยให้ php แยก case การทำงานกันออกมา ว่าเป็นการแสดง form เฉยๆ หรือว่าเป็นส่วนการรับค่ามาคำนวนแล้ว

อีกหลายๆครั้ง บางคนก็ชอบที่จะแยกการทำงานออกมาเป็นไฟล์ย่อยๆ เพื่อให้แต่ละไฟล์ทำงานแตกต่างกัน จากนั้นก็ include เข้าไปที่หน้าเว็บหลักที่กำลังทำงานอยู่ โดยไฟล์ย่อยๆ ก็จะมี function ต่างๆที่ได้เขียนเตรียมพร้อมเอาไว้แล้ว หรือบางคนไม่ชอบใช้หลายไฟล์ ก็เขียนไฟล์เดียวเลย ให้ทำงานได้ครบทุกอย่าง อาจจะแยกเป็น function เอาไว้ก่อนแล้ว หรือว่าก็เขียนให้คำนวนตามลำดับ มาตั้งแต่บนลงล่าง ทีเดียวจบไปเลย ก็ได้เหมือนกัน

ส่วนใหญ่ของคนที่ทำงานกับ PHP ก็จะเขียนให้มีการแสดงผลส่วนหน้าเว็บ(HTML code) ผสมเข้าไปในโค้ด PHP เลย เรียกได้ว่า เรียก PHP แค่ไฟล์เดียว ก็ได้หน้าเว็บที่ครบทุกส่วนตั้งแต่ header ยัน footer แล้ว หรือบางคน (ที่เป็นส่วนน้อย) ก็อาศัย การใช้ Template System เช่น พวก smarty ซึ่งจะเป็นการแยกส่วน php ออกจากส่วนแสดงผล HTML 

ผมเชื่อว่าหลายท่านน่าจะเข้าใจเรื่องที่ผมเล่ามาทั้งหมดนี้อย่างดีอยู่แล้ว แต่ถ้าหากไม่เข้าใจ ท่านอาจจะยังไม่เชี่ยวชาญพอ หรือยังขาดประสบการณ์อีกพอสมควร ทั้งนี้เพื่อให้ทุกคนเข้าใจตรงกัน ว่านี้คือการเขียนในแบบเก่าๆมา เพราะว่าเจ้า CodeIgniter จะเปลี่ยนแนวทางการเขียน php, การแสดงผล HTML , การรับค่าจาก form เป็นแบบใหม่ที่เราไม่คุ้นเคยกันเลยครับ ซึ่งหากติดตามต่อไปจะเข้าใจ ว่าเปลี่ยนเป็นแบบไหน ต่างจากของเดิมอย่างไร

CodeIgniter ทำงานอย่างไร

เราจะยังไม่เล่า ว่าเขียน PHP ให้ CodeIgniter ได้อย่างไร แต่เราจะมาเล่าภาพรวมกันก่อน ว่า CodeIgniter นั้นมีการทำงานอย่างไร เพื่อให้เห็นภาพกันก่อน

CodeIgniter คือ PHP Framework ที่มีการทำงานเป็นแบบ MVC (Model-View-Controller) โดยผมเชื่อว่า MVC เป็นเรื่องใหม่ของใครหลายคนแน่นอน

MVC (Model - View - Controller ) คืออะไร

เป็น Pattern ของระบบ ที่แยกส่วนการทำงานออกมาเป็นสามส่วน ซึ่งประกอบด้วย Model คือส่วนที่เกี่ยวข้องกับ database ทั้งหมด , View คือส่วน แสดงผล ซึ่งหลักๆก็คือ HTML ที่แสดงผลในรูปแบบต่าง และ Controller ก็คือ ส่วนที่ประมวลผล คิด คำนวน สั่งการ ดำเนินการ หลักๆของระบบเลย


(credit รูป NECTEC)

จากรูป จะพอให้เห็นภาพขึ้นมาได้บ้าง ก็คือ User ที่จะเห็นหน้าเว็บ ที่จะปรากฏนั้น เกิดมาจาก view ซึ่ง View นี้เกิดจากการทำงานของ Controller ที่เรียกข้อมูลมาจาก Model แล้วส่งให้ กับ view เอาไปแสดงผลจากข้อมูลทั้งหมดที่ได้รับนั่นเอง ดังนั้น user ที่เห็น view แต่หากต้องการจะ action อะไรกับตัวเว็บ ก็จะ action ไปที่ controller เพื่อให้ทำงานตามที่เราเขียนโค้ดให้ ว่าแต่ละ controller ทำหน้าที่อะไร แล้ว controller ที่เราเขียนโค้ด ก็จะเป้นตัวเรียก model และ view ต่อไปนั่นเอง

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

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

นี่จะเป็นประเด็นที่จะทำให้มือใหม่ที่เริ่มใช้ Codeigniter งงมากที่สุด เพราะว่าจากเดิม ที่เคยเขียนหน้าเว็บมา อย่างมาก ก็แยก ส่วนที่ดำเนินการกับ database ออกมาเป็น function แต่ว่า codeigniter จะแยกไฟล์ และเรียกใช้งานแยกจากกันเลย แต่หากไม่ได้ลองทำจริงก็คงจะยังไม่เข้าใจอย่างแน่นอน เดี๋ยวในบทความต่อๆไป ก็จะมาสอนให้ลองใช้จริงกันอีกครั้งหนึ่ง แล้วจะอ๋อ มันเป็นอย่างนี้นี่เอง

อ่านบทความต่อ step 1 เริ่มต้น ใช้งาน codeigniter เริ่มเขียนจริง

Create: Modify : 2012-03-07 11:24:26 Read : 10591 URL :