Laravel มีการจัดการกับ configuration แบบ environment based หรือพูดง่ายๆ ว่าการตั้งค่าที่แบ่งไปตาม environment ที่ Laravel ทำงานอยู่ ซึ่งคนที่เคยเขียน Codeigniter ( CI: Handling Multiple Environment ) น่าจะคุ้นเคยดีสำหรับการจัดการ configuration แบบ environment based[imooh_google_ads]
การตั้งค่าแบบ environment based ใน Laravel ก็เริ่มต้นจากการสร้างโฟลเดอร์ชื่อเดียวกันกับ environment ที่เราตั้งการ เช่น กำลังรันบนเครื่อง local ของเราเอง ก็ให้สร้างโฟลเดอร์ชื่อ local ไว้ใน app/config ครับ จากนั้น ถ้าเราอยากเปลี่ยนค่า config ตอนที่เรารันที่ local ก็ให้สร้างไว้ในโฟลเดอร์ local นี้ครับ เช่น ต้องการเปลี่ยน driver ในการ cache เพราะไม่อยากยุ่งยากในการติดตั้ง memcached หรือ redis บนเครื่อง local ของเรา ก็สร้างไฟล์ cache.php ที่ใช้ในการตั้งค่า driver และตั้งค่า driver ในไฟล์ ให้เป็น file
ไฟล์ app/config/local/cache.php
<?php return array( 'driver' => 'file', );
พอเราสร้างโฟลเดอร์สำหรับ local ของเราแล้ว จากนั้นเราก็ต้องบอกให้ Laravel รู้ว่าจะต้องใช้ environment อะไร เพราะค่าเริ่มต้น (default) จะมีค่าเป็น production โดยเข้าไปแก้ไขไฟล์ bootstrap/start.php ซึ่งจะมีการเรียกใช้ $app->detectEnvironment ที่ทำหน้าที่ในการเลือกว่าจะใช้ environment อะไร
การตั้งค่าก็ไม่อยากครับ เช่น ถ้าผมต้องการให้ตรวจสอบจากโดเมน dev.imooh.com ให้ใช้ local แต่ถ้าเป็น www.imooh.com ให้ใช้ production ก็ทำได้ดังนี้ครับ
ส่วนการจะตรวจสอบว่าตอนนี้ใช้ environment อะไรอยู่นั้น Laravel ก็มีฟังก์ชัน environment() ของ App ให้เราใช้ครับ
$environment = App::environment();