PHPPamokos.lt


10. Dotenv - aplinkos atpažinimas

Kiekvienas save gerbiantis programuotojas prie projekto dirba keliose skirtingose aplinkose - dažniausiai tai kaip minimum yra lokalus kompiuteris ir gyvas serveris. Dar dažnai pridedamas testinis serveris, o kartais ir ketvirtas lygis - atskira aplinka išorės testuotojams. Tai Laravel 4 versijoje visa tai buvo valdoma app/config kataloge kuriant pakatalogius. Dabar tai daryti paprasčiau.

Pagrindiniai nepatogumai, kuriant tuos app/config katalogus, buvo du:

  • Konkrečios aplinkos atpažinimas buvo vykdomas faile start.php ir priklausė nuo kompiuterio pavadinimo, kurio kartais taip paprastai net nežinodavai ar kuris galėjo ateityje pasikeisti
  • Tie failai pagal nutylėjimą patekdavo į source control, nors teoriškai taip neturėtų būti - tai nėra aplikacijos dalis, o tik aplinkos konfigūracija

Dabar Laravel 5 naudoja PHP biblioteką DotEnv, kurios esmė - visą konfigūraciją talpinti į failus su plėtiniu .env. Tai su tuščia Laravel instaliacija pagrindiniame kataloge galite pamatyti failą .env.example. Pervadinkite jį į tiesiog .env, ten patalpinkite savo aplinkos konfigūracijos masyvą - ir viskas. Nebereikia jokių katalogų - kiekviena aplinka (ar kiekvienas komandos narys savo kompiuteryje) turi savo .env failą. Kuris, be abejo, nėra talpinamas į Source Control (išskyrus .env.example failą, kurį galite patalpinti vien tam, kad kolegos žinotų, kokių aplinkos kintamųjų reikia projekto funkcionavimui).

Kaip naudoti aplinkos kintamuosius?

Visas tas .env failas Laravel sistemoje paverčiamas į globalaus masyvo $_ENV elementus. Taigi, jeigu jums reikia panaudoti kokį konkretų parametrą, galite naudoti $_ENV['variable'] ar kažką panašaus.

Taip pat visgi kartais prireikia sužinoti aplinkos pavadinimą, kurioje dirbame - ar tai yra 'local', ar 'production', ar kt. Tam galime kviesti tokią konstrukciją:

$environment = $app->environment();

Taip pat veiks ir tokie du variantai:

$environment = app()->environment();
$environment = App::environment();

O jeigu reikia patikrinti, kurioje aplinkoje esame (sakykime, tam atvejui, kai reikia kažkokį veiksmą vykdyti tik ne 'gyvoje' aplinkoje, pvz el.laiškų siuntimą), tada paduodame parametrą funkcijai:

if ($app->environment('local'))
{
    // Darome kažką lokalaus
}

Taip pat galima paduoti ir kelias aplinkas iš karto, per kablelį. Sakykime, jei mums reikia atlikti veiksmą, jei aplinka yra staging arba production, tai atrodo taip:

if ($app->environment('staging', 'production'))
{
    // Siunčiame laišką ar kažkas tokio
}


(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com