CakePHP - Automatické nastavení pro vývoj a pro produkci

Článek je psán na verzi CakePHP 2.4.1 a snad mu porozumí začátečník i pokročilý. Pokud najdete chybku, nebo je něco nejasné, křičte na mě v komentářích!

Pro menší projekty je to možná zbytečné, ale občas je prostě potřeba měnit nastavení cache, session, případně nějaké jiné nastavení v core.php nebo bootstrap.php. Přepisovat nastavení debugu, případně databází, stojí za starou belu, takže by určitě bylo fajn pomoct si nějakou podmínkou.

Proto vytvoříme soubor production_variable.php v adresáři app/Config a umístíme do něj definici testovacího / produkčního prostředí.

<?php
define('PRODUCTION', false); // pro ostrý provoz dáme true

Na localhostu necháme false, do produkce nahrajeme true, a odteď už na něj sahat nebudeme. A co s takovým souborem? Cake si nejdříve načte core.php a potom pokračuje na bootstrap.php, případně database.php, takže si tuto konstantu odchytíme hned na začátku core.php:

<?php
require "production_variable.php";
...

Tím pádem celá aplikace ví, jestli si hrajeme, nebo jedeme na ostro, takže stačí už jen psát věci jako: Configure::write('debug', PRODUCTION ? 0 : 2); a podobně.

Zapeklitější nastavení databáze

S databází je to kapku těžší, ale jen kapku. :) V souboru database.php v třídě DATABASE_CONFIG budeme mít zaráz nastavení pro produkci: $default = array(...) i pro vývoj: $dev = array(...). Teď už jen použít to správné, k tomu si upravíme konstruktor této třídy, který vložíme za definice databází:

function __construct (){
	if(!PRODUCTION){
		$this->default = $this->dev;
	}
}

Takže vždy, když bude Cake inicializovat databázi, použije nastavení podle konstanty PRODUCTION. No, není to skvělé? Je to skvělé!

Zobrazit celý obsah database.php

13.10.2013 Ondřej Henek