CI: Handling Multiple Environment

ช่วงแรกๆ ของการพัฒนาโปแกรมด้วย CI เพื่อนๆ หลายคนอาจจะมีปัญหาเกี่ยวกับการแก้ไขไฟล์ config.php ของ CI คือตอนที่อยู่ในช่วงพัฒนา (Dev) ก็ยังไม่มีปัญหาอะไรมากหรอกนะ แต่พอมีการเอาขึ้นใช้งานที่เซิฟเวอร์จริง (Production) แล้วมีการพัฒนาฟีเจอร์ใหม่ๆ เพิ่มเข้าไปนี่แหละ ค่าบางค่าที่อยู่ในไฟล์ config.php ที่เครื่อง Dev กับ Production มันดันใช้ร่วมกันไม่ได้ เอาตัวอย่างง่ายๆ ก็อาจจะเป็นโดเมนของเว็บเรานี่ล่ะ ที่ Dev อาจจะเป็น dev.example.com ที่ Production ก็จะเป็น www.example.com อะไรประมาณนี้ (อันนี้ตัวอย่างง่ายๆ นะ) อาจจะมีค่าอย่างอื่นอีกบาน แก้ไขที่ต้องตามไปแก้ที่ Dev บ้าง Production บ้างมันส์กันเลยทีเดียว

แต่ CI เวอร์ชั่นหลังๆ จะมีการจัดการสิ่งเหล่านี้ที่ดีขึ้นมาหน่อย คือ มีการตังค่าตัวแปร environment ขึ้นมา เพื่อจะได้ไปโหลดเอา config.php จาก environment ที่ถูกต้อง โดยที่เราไม่ต้องไปเปลี่ยนค่าของ config กับไปกับมาอยู่บ่อยๆ โดยตัวแปรนี้จะเป็นชนิด constant อยู่ที่ไฟล์ index.php เลย ค่าเริ่มต้นจะเป็น development ครับ ซึ่งรูปแบบการใช้งานก็คือ จะมีการสร้างโฟลเดอร์ config ที่มีชื่อเหมือนกับ environment ที่เรากำลังทำงานอยู่

application/config/{ENVIRONMENT}/{FILENAME}.php

เช่น ที่ Production ก็จะเป็น

application/config/production/config.php

CI จะเข้าไปมองหาไฟล์นี้ก่อน หากไม่มีก็จะออกไปโหลดไฟล์ application/config/config.php แทนครับ อันนี้รวมไปถึงไฟล์ config ที่เราสร้างขึ้นมาเองด้วยนะ

หรืออาจจะประยุกต์ให้กำหนดค่าของ environment แบบ dynamic เพิ่อจะเอาไปใช้โหลดไฟล์ config หน้าบ้าน (front-end) กับ หลังบ้าน (backend) ก็น่าจะได้นะครับ

แหล่งข้อมูล: http://ellislab.com/codeigniter/user-guide/libraries/config.html#environments