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
+
0
-

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:

  1. Jde Nette nejak presvedcit, aby i pres prohlizec fungoval v CONSOLE modu?
  2. Nebo je lepsi udelat nejaky uplne novy mod?

Diky za pomoc!

Honza Kuchař
Člen | 1662
+
0
-

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.

MartyIX
Člen | 217
+
0
-

Díky Ti! Ten config.ini jsem mel dobre. Stacilo vymenit funkci a funguje (nebo ponechat obe). Ted jeste musim najit, jaky je v tech funkcich rozdil, jsem z toho zmateny.

Editoval MartyIX (24. 9. 2010 21:58)