Nette Framework
  • Úvodní stránka
  • Download
  • Dokumentace
  • Fórum
  • Blog
  • Přispějte
  • Quick Start
    • Začínáme
    • Adresářová struktura
    • Vytvoření presenteru
    • Připojení šablony
    • Tvorba odkazů
    • Hezčí šablony
    • Zobrazení tabulky
    • Stránkování a řazení
    • Tvoříme komponentu
  • Nette\Annotations
  • Nette\Application
    • Application
    • AppForm
    • Control
    • Presenter
    • PresenterCompo­nent
    • PresenterRequest
    • Routování
    • MultiRouter
    • Route
    • SimpleRouter
  • Nette\Caching
  • Nette\Component
  • Nette\Debug
    • Základy
    • Logování chyb
    • Firebug
  • Nette\Environment
  • Nette\Forms
  • Nette\IO\SafeS­tream
  • Nette\Loaders
  • Nette\Object
  • Nette\Security
    • Bezpečnost aplikací
    • Identity
    • SimpleAuthenti­cator
    • Permission
    • Dynamická správa rolí a zdrojů
  • Nette\String
  • Nette\Templates
    • Template
    • Template Filters
    • Template Helpers
  • Nette\Web\Html
  • Nette\Web\HttpR­equest
  • Nette\Web\HttpR­esponse
  • Nette\Web\Session
  • Nette\Web\User
Naposledy změněno 8. 11. 2008 Edituj Historie Poslední změny

Nette\Environment

Propojení s Nette\Config

Třída Config má na starosti načtení konfigurace prostředí složené z kombinací nastaveních, služeb, proměnných a konstant. Doporučuje se používat konfiguraci uloženou ve formátech ini a xml, jelikož nativní parsery pro tyto soubory jsou nativně podporovány v PHP a jsou velmi rychlé. Dokonce tak rychlé, že naparsovanou konfiguraci se nevyplatí ani kešovat.

Příklad config.ini souboru:

[common]
set.date-timezone = "Europe/Prague"
set.iconv-internal_encoding = "%encoding%"
set.mbstring-internal_encoding = "%encoding%"
set.include_path = "%appDir%;%libsDir%"

variable.tempDir = %appDir%/cache
variable.foo = %bar% world
variable.bar = hello
const.PROJECT = eshop

[production < common]
database.driver = sqlite
database.file = "%modelsDir%/demo.db"
database.lazy = TRUE

service.Nette-Security-IAuthenticator = Users

[development < production]
database.profiler = TRUE

Následující blok kódu demonstruje, jak lze s konfiguračními soubory pracovat:

// načtení a kontrolního vypsání konfigurace
$config = Config::fromFile('config.ini');
Debug::dump((array) $config);

// současnou konfiguraci můžeme i ukládat,
// do souboru se přidá poznámka, že byl vygenerovan
$config->save('config_generated.ini', 'production');


// Config::fromFile() pouze načte nastavení ze souboru a uchová jej do objektu,
// oproti tomu Environment::loadConfig() jej načte a aplikuje
Environment::loadConfig('config.ini');
// nebo ekvivalentně:
Config::loadConfig($config);

// změny v prostředí PHP můžeme zkontrolovat
phpinfo();
if (defined('PROJECT')) echo PROJECT;

Poznámka k set.include_path: V linuxových systémech se používá jiný oddělovač cest než na Windows systémech. Nette\Config řeší tento problém použitím univerzálního oddělovače cest v konfiguračním souboru (středník), pak při běhu nahradí tento oddělovač za oddělovač cest konkrétní platformy, tudíž nedochází k žádným nekompatibilitám.

Název prostředí

Prostředí je zjednodušeně název počítače, na kterém aplikace právě běží. Může to být jeden z počítačů, kde probíhá vývoj, může to být produkční server. Každé prostředí má jiné parametry (cesty k adresářům, připojení k databázi, …), mohu si je pojmenovat a podle názvu prostředí načíst kupříkladu konfiguraci:

Environment::setName('mujpocitac');
...
Environment::loadConfig(); // nacte z config.ini sekci [mujpocitac]

Název prostředí je libovolný řetězec, na kterém žádná logika v Nette nestojí.

Režimy prostředí

Režim neboli mód je indikátor, určující nějaký parametr daného prostředí. Módy lze nastavovat buď přes config.ini, nebo přímo voláním Environment::setMode('mujmod', $bool), zjišťovat stav lze přes Environment::getMode('mujmod').

Autodetekce

Třída Nette\Environment disponuje vestavěnou autodetekcí pro režimy live, debug, console a pro název prostředí (a jako téměř vše v Nette ji lze rozšířit nebo přepsat). Asi nejdůležitější mód live určuje, jestli aplikace běží na ostrém (produkčním) serveru nebo ne. Proto také existuje zkratka, místo Environment::getMode('live') lze volat výstižnější Environment::isLive(). Pro režimy console a debug existují obdobné zkratky Environment::isConsole() a Environment::isDebugging().

Autodetekce názvu prostředí úzce souvisí s detekcí režimů live & console, protože právě na základě nich se název zvolí z variant Environment::DE­VELOPMENT, Environment::PRO­DUCTION nebo Environment::CON­SOLE.

Příklad

…a přímo ze života: mám jednu aplikaci, která běží v pěti různých prostředích:

  1. 2× na lokálním serveru, kde probíhá vývoj (můj počítač + virtuální testovací stroj)
  2. 1× na serveru tojeono.cz (jako texy.info)
  3. 2× na serveru hostmonster.com (jako nettephp.com a dibiphp.com)

Každé prostředí může mít jiný název. Prostředí 2) a 3) budou mít nejspíš vždy aktivní režim live. V prostředí 1) budu vyvíjet nejčastěji v „neživém“ režimu, ale před nahráním na server si mohu mód live ručně aktivovat a ověřit, jestli všechno funguje v pořádku. Mezi názvy prostředí a režimy tedy není žádná přímá souvislost, krom autodetekce.

Viz také:

  • Nette\Environment API reference
  • Nette\Configurator API reference
  • Nette\Service­Locator API reference
« Firebug Nette\Forms »

Nette Framework powered | dibi powered | Texy! powered | Institut Školení PHP