หน้าเว็บ

วันศุกร์ที่ 28 มกราคม พ.ศ. 2554

เริ่มต้นกับ CodeIgniter

     ปกติเรียวเองทำงานสาย Programming มาได้ซักระยะ แต่เขียน PHP มาได้ก็ปีกว่าๆแล้วค่ะ (แต่ความรู้เท่าหางอึ่ง _^_) ตอนทำงานใหม่ก็ยังไม่รู้จักเฟรมว้งเฟรมเวิกส์อะไรหรอกค่ะ Hardcode ไปเลย ซึ่งปัจจุบันที่บริษัทก็ยังเป็น Hardcode อยู่ เขียนปนซะเปะซะปะไปเรื่อยไม่ค่อยเป็นระบบ แต่ข้อดีอย่างหนึ่งทีเรียวเห็นได้ชัดเลยคือ เจ้า PHP แบบ basic ที่เราเขียนกันอยู่เนี่ย มันเร็วกว่า Framework มากๆ เพราะมันไม่ต้องไปโหลด Library อะไรมาเยอะแยะไปหมด แต่พอแก้ code ทีนี่ปวดหัวเหมือนกันอะไรก็ไม่รู้ปนกันไปหมด ตอนหลังก็เริ่มดีขึ้นหน่อยเขียนเป็น Function และก็ออกแบบ Class เองกับเค้าบ้างแต่ตัวโครงสร้างมันก็ยังไม่เป็น MVC (Model-view-controller) อย่างเช่น Framework เดี๋ยวนี้
     แต่อย่างว่าหละค่ะพอเขียนไปนานๆเห็นคนนู้นคนนี้เค้าเริ่มใช้ Framework เรียวก็เลยลองหา Framework มาใช้กับเค้าบ้างตัวแรกที่เรียวเอามาใช้คือเจ้า CakePHP ลองเล่นไปไม่ถึง 2 วันก็เริ่มท้อ บอกตามตรงว่างงเอามากๆ เลยตอนหลังไปลองเจ้า CI  (CodeIgniter) รู้สึกว่ามันใช้ง่ายกว่าเยอะเลย หลังจากนั้นก็ลองศึกษามาซักระยะกะว่าเวลาว่างจะเอามาเขียนเป็นบทความไปเรื่อยๆ เผื่อลืมอะไรจะได้เข้ามาอ่านด้วยก็ดีเหมือนกัน
     ฮ่า...มาลองเริ่มต้นใช้เจ้า CodeIgniter (เรียวอ่านว่า โค๊ด-อิ-ไนซ์-เตอร์) ถ้าอ่านผิดไงช่วย Comment บอกด้วยเน้อ ต่อไปจะเรียกว่า CI และกัน
    ก่อนอื่นไปโหลด Library ของเจ้า CI มาก่อนเจ้าค่ะ http://codeigniter.com/downloads/ จากนั้นก็พอแตกไฟล์ซิบออกมาจะเจอโฟลเดอร์ดังนี้








จริงๆโฟลเดอร์หลักคือ system เจ้าโฟลเดอร์ user_guide เป็นแค่คู่มือมันเฉยๆจะลบออกไปก็ได้ถ้าใครรำคาญตา
อย่างที่บอกหละค่ะว่าตัว Framework นั้นถูกออกแบบมาแบบ MVC ดังนั้นการทำงานจะแยกออกจากกัน View , Model , Controller
View ก็คือหน้า UserInterface ที่อยู่ในรูปของ html
Controller จะทำหน้าที่ควบคุมการทำงานของระบบเช่นพวก Logic ต่างๆรวมทั้ง Assign ค่าแสดงในส่วนของ View ด้วย
Model นั้นจะควบคุมในเรื่องของ DataAccess จำพวกที่ต้องยุ่งกับฐานข้อมูลทั้งหลาย บางคนคิดว่า Model ทำหน้าติดต่อฐานข้อมูล จะพูดอย่างนั้นก็ไม่ถูกซะทีเดียวเพราะตัว CI หรือ CodeIgniter นั้นจะมีเจ้า Active Record ทำหน้าที่ติดต่อและจัดการฐานข้อมูลอีกที ด้วยเราสามารถเรียกใช้เจ้า Active Record ผ่านทาง Model นั่นเอง
จากนั้นลองเข้าไปในโฟลเดอร์ system/application จะเห็นโฟลเดอร์เยอะแยะไปหมด แต่เรียวจะพูดถึง 3 โฟล์เดอร์หลักๆก่อนจากที่กล่าวไปข้างต้นนั่นก็คือเราจะเห็น controllers,views,models
ก่อนอื่นมาตั้งค่า config กันซักนิดหนึ่งให้เข้าไปที่ system/application/config จากนั้นเปิดไฟล์ config.php ขึ้นมาจะเห็น
$config['base_url']    = "http://example.com/";
ตรงนี้จะเป็นการกำหนดค่า config ให้กับเว็บไซต์เราให้เปลี่ยนเป็น Domain ของเราเอง ตอนนี้เรียวทดสอบใน localhost ก่อนนะค่ะบน port 81 (port 80 เจ้า IIS มันจองไปเรียบร้อยเลยต้องเิปิด Port 81 ส่วนใครเซ็ต port ไว้ยังไงก็กำหนดเอาเอง) ของเรียวเปลี่ยนเป็น
 $config['base_url']    = "http://localhost:81/CI-Blog";
เรียวเก็บไว้ในโฟล์เดอร์ CI-Blog อีกทีซึ่งจะอยู่ใน webroot  ถ้าใครติดตั้ง AppServ ก็จะอยู่ใน AppServ/www/CI-Blog นั่นหละค่ะ
จากนั้นลองรันดุนะค่ะ รันผ่าน http://localhost:81/CI-Blog
ตัว Controller Welcome จะทำงานได้หน้าต่างดังรูป













ถ้าเห็นแบบนี้ก็ โฮ่ๆๆ ผ่านฉลุย เริ่มขั้นตอนต่อไปดีฟ่า
ทีนี้เราจะเห็นว่าเมื่อเราเรียกผ่าน Base_url คือ http://localhost:81/CI-Blog นั้น มันจะวิ่งไปเรียก controller Welcome มาเป็นอันดับแรกซึ่งเป็น Default Controller ที่ทาง CI ตั้งมาให้ ซึ่งมันจะไปเรียกไฟล์ welcome.php ในโฟลเดอร์ controller นั่นเอง ทีนี้ให้ไปเปลี่ยน Default Controller ก่อนค่ะ
ให้เปิดไฟล์ system/application/config/routes.php ขึ้นมา
$route['default_controller'] = "welcome";  // แก้เป็นชื่อ controller ที่ต้องการ
$route['default_controller'] = "main"; // ในที่นี้เรียวแก้เป็น main และกัน หุหุ
ทีนี้เรามาลองสร้าง Controller ขึ้นมาเองดีกว่า เพื่อให้เห็นภาพ ให้สร้างไฟล์ main.php ขึ้นมาเก็บไว้ใน
system/application/controllers
จากนั้นมาเขียน Code กัน

class Main extends Controller {
     function Main()
     {
         parent::Controller();
     }
     function index()
     {
         echo "สวัสดีชาวโลภทั้งหลาย ห้าห้า";
     }
}

ที่นี้เรียวลองรันเหมือนกัน http://localhost:81/CI-Blog จะได้หน้าตาแบบไม่ประหลาดค่ะ
ซึ่งจะแสดงข้อความ "สวัสดีชาวโลภทั้งหลาย ห้าห้า";
เรียวลองเรียกผ่าน http://localhost:81/CI-Blog/index.php/main/
ก็จะได้หน้าตาเหมือนเดิม นั่นคือ base_url / ชื่อ Controller / ชื่อฟังก์ชั่น / ชื่อ parameter
ในทีนี้เรียวไม่ได้ใส่ชื่อฟังก์ชั่นมันเลยวิ่งเข้า index เป็นอันดับแรกค่ะ
ไว้มาเขียนต่อนะเจ้าค่ะ หากบทความอ่านไม่รู้เรื่องขออภัยด้วยค่ะ มือใหม่...ชะแว๊ป...

ไม่มีความคิดเห็น:

แสดงความคิดเห็น