laravel4 detect environment

แก้ไขใน bootstrap/start.php
ตัวอย่างจะ detect ด้วยชื่อเครื่อง (hostname)
และถ้ากรณีโปรเจ็คเป็น Disaster Recover Site (DR site)

$app = new Illuminate\Foundation\Application;

$env = $app->detectEnvironment(
    function()
    {  
        if(gethostname()=="MY-HOSTNAME01") return "dev";
        if(gethostname()=="MY-HOSTNAME02") return "alpha";
 
                //for DR site (server forward SITENAME)
        if(@SITENAME=="FTN"){ return "ftn";}
        if(@SITENAME=="MTG"){ return "mtg";}
       
    }
);

โดยเราสามารถเรียกใช้ config ตาม environment ได้ โดยสร้าง folder dev,alpha,ftn,mtg อยู่ด้านใน app/config/ และมีไฟล์ที่อยาก override ค่าตัวแปล เช่น app.php,database.php

โดย laravel จะโหลด app.php ด้านนอกก่อน แล้วถ้า detect environment เจอก็จะเข้าไป define ค่าซ้าอีกที
ถ้าชื่อตัวแปลใน app.php ที่อยู่ด้านนอก และ app.php ที่อยู่ใน folder ของ environment ซ้ำกัน จะเอาค่าของใน environment

ถ้าหากมีการใช้งาน unittest ที่มีการใช้ค่าใน Config ที่รันบน localhost ค่า config จะใช้ใน app.php ที่อยู่ด้านนอกนะครับ

ถ้าหากจะ detect environment เพื่อ define ค่าให้ต่างกันในแต่ละ environment ใช้คำสั่งนี้

if (App::environment('dev'))
{
    // The environment is dev
}

Related posts:

This entry was posted in laravel4. Bookmark the permalink.