FileStorage::lock() versus Debugger::$scream = true;
- filda
- Člen | 8
Ahoj,
snažím se do našeho projektu přidat Latte šablony a narazil jsem na
následující problém. Pokud Laděnce nastavím
<?php
Debugger::$strictMode = true;
Debugger::$scream = true;
?>
a zároveň použiju PhpFileStorage pro kešování šablon, tak dojde k ukončení aplikace s chybou: failed to open stream: No such file or directory v metodě lock() třídy FileStorage na řádku
<?php
$handle = @fopen($cacheFile, 'r+b'); // @ - file may not exist
?>
To je sice logický chování, ale já bych chtěl mít co nejstriktnější nastavení php a zároveň mít šablony kešovaný.
Lze tohle chování nějak obejít nebo jsem něco špatně nastavil?
- Jan Tvrdík
- Nette guru | 2595
Debugger::$scream
se při normálním vývoji nepoužívá.
Slouží pro velmi specifické případy.
- filda
- Člen | 8
Jan Tvrdík napsal(a):
Debugger::$scream
se při normálním vývoji nepoužívá. Slouží pro velmi specifické případy.
Jaký specifický připady?
Já měl vždycky pocit, že by se ta konstrukce neměla používat jednak
kvůli nestandardnímu chování, jednak kvůli výkonovým dopadům a hlavně
proto, že potlačovat výpis chyb, zvlášť při vývoji, je prostě
špatně.
- Aurielle
- Člen | 1281
Když si tu konstrukci ošetříš na návratové hodnoty a podchytíš všechny možné stavy, tak bych v tom neviděl problém. A Nette ti při vývoji žádné chyby nepotlačí, pokud samozřejmě před nějakou konstrukci ten zavináč nenapíšeš. A kdyby ano, tak předpokládám, že víš, co děláš.
- Filip Procházka
- Moderator | 4668
Samozřejmě je špatně, když ve svém kódu potlačuješ chyby. Nette ovšem ví proč to dělá, spíše se snaž pochopit, proč to dělá. Většinou proto, že PHP je v určitých ohledech dost stupidní a řeší tím některé nedostatky. Ty je už potom řešit nemusíš.
Ty ale scream v podstatě nepotřebuješ. Až ho budeš potřebovat, tak to budeš vědět, věř mi.
- filda
- Člen | 8
HosipLan napsal(a):
Samozřejmě je špatně, když ve svém kódu potlačuješ chyby. Nette ovšem ví proč to dělá, spíše se snaž pochopit, proč to dělá. Většinou proto, že PHP je v určitých ohledech dost stupidní a řeší tím některé nedostatky. Ty je už potom řešit nemusíš.
Ty ale scream v podstatě nepotřebuješ. Až ho budeš potřebovat, tak to budeš vědět, věř mi.
Předpokládám, že to Nette dělá, protože je to rychlejší než se nejdřív na ten soubor zeptat pomocí file_exists(), jinej důvod mě nenapadá.
Do dneška jsem totiž scream používal jako nástroj k odhalování „nepěkně“ napsanejch částí naší aplikace a myslel jsem si, že vím proč ho používám. Podle toho co říkáte jsem se pletl.
Jaký jsou teda skutečný důvody k použití scream?
- Filip Procházka
- Moderator | 4668
filda napsal(a):
Do dneška jsem totiž scream používal jako nástroj k odhalování „nepěkně“ napsanejch částí naší aplikace a myslel jsem si, že vím proč ho používám. Podle toho co říkáte jsem se pletl.
Jaký jsou teda skutečný důvody k použití scream?
Až to zjistím, dám ti vědět :) Ještě jsem ho totiž nepotřeboval ;)