Vynuceny Environment::CONSOLE mod i v prohlizeci
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MartyIX
- Člen | 217
Pokousim se pouzit Environment::CONSOLE mod pro napsani par unit testu ve sve aplikaci. Upravil jsem si bootstrap.php nasledovne:
<?php
// Step 1: Load Nette Framework
// this allows load Nette Framework classes automatically so that
// you don't have to litter your code with 'require' statements
// require LIBS_DIR . '/Nette/loader.php';
require dirname(__FILE__) . '/../libs/Nette/loader.php';
// Step 2: Configure environment
// 2a) enable Debug for better exception and error visualisation
Debug::enable();
// 2b) enable RobotLoader - this allows load all classes automatically
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();
if (defined('NETTE_FORCED_MODE')) {
if (NETTE_FORCED_MODE == 'console') {
Environment::setMode(Environment::CONSOLE);
}
}
// 2b) load configuration from config.ini file
Environment::loadConfig();
// Step 3: Configure application
$application = Environment::getApplication();
// Step 4: Setup application router
$router = $application->getRouter();
Kdyz si tedy nadefinuji v souboru s unit testem direktivu NETTE_FORCED_MODE = ‚console‘, tak bych chtel prejit do rezimu konzole.
Pokud spustim soubor s unit testem pres konzoli, tak je Nette opravdu v rezimu Environment::CONSOLE, ale kdyz zkusim spustit soubor s unit testem pres prohlizec, tak kod:
var_dump(Environment::isConsole());
var_dump(Environment::isProduction());
var_dump(Environment::getConfig('database'));
vraci:
bool(false)
bool(false)
// pole s daty z development modu (rad bych ale dostaval data z config.ini pro mod konzole)
Otazky tedy jsou:
- Jde Nette nejak presvedcit, aby i pres prohlizec fungoval v CONSOLE modu?
- Nebo je lepsi udelat nejaky uplne novy mod?
Diky za pomoc!
- Honza Kuchař
- Člen | 1662
Použil bych spíš
Environment::setName(Environment::CONSOLE);
A v configu potom něco jako
...
[production < common]
mode.production = true
[development < production]
mode.production = false
[console < development]
mode.console = true
Otestované to nemám, ale i tak doufám, že jsem ti pomohl ukázat najít ten správný směr.