
Při programování se nám často stane, že testujeme nějaké dva průchody programem a potřebujeme v jednom kroku část kódu zakomentovat a zároveň jinou část kódu odkomentovat.
U mne tato situace nastává třeba v případě, že generuji nějaké .pdf pomocí mpdf z HTML. Mpdf se totiž nevyznačuje zrovna nějakým úžasným hlášením chyb (prostě často při chybě nevykreslí vůbec nic) a při ladění je potřeba si občas přepnout zpět a vypsat generované HTML.
Kolik znaků podle vás stačí pro takové přepnutí? Ano, správná odpověď je jeden. Požadované struktury dosáhneme kombinací blokových a řádkových komentářů takto:
- Na začátek prvního bloku dáme normální blokový komentář.
- Mezi první a druhý blok vložíme
/*/
, čímž ukončíme zakomentování prvního bloku - Na konec druhého bloku dáme konec blokového komentáře, který zakomentujeme řádkovým komentářem
- $html = '.......';
- /*
- require_once($MPdfFile);
- $mpdf = new mPDF();
- $mpdf->WriteHTML($html);
- $mpdf->Output();
- /*/
- echo $html;
- //*/
Nyní stačí na začátek řádku 2. vložit jedno zpětné lomítko a tím:
- Z blokového komentáře na řádku 2. vytvoříme řádkový v kterém je zakomentovaná hvězdička.
- Odkomentují se nám řádky 3. - 6.
- Řádek 7 začne fungovat jako začátek blokového komentáře v kterém je zakomentované lomítko.
- Zakomentuje se řádek 8.
- Zakomentuje se řádek 9. až do jeho konce kde je konec blokového komentáře.
- $html = '.......';
- //*
- require_once($MPdfFile);
- $mpdf = new mPDF();
- $mpdf->WriteHTML($html);
- $mpdf->Output();
- /*/
- echo $html;
- //*/
Tento princip je potřeba dobře pochopit. Doporučuji, abyste si příklad nahráli do svého editoru a vyzkoušeli. Hlavní je pochopit jak funguje skupina znaků, kterou nazývám invertor blokového komentáře tj. /*/
.
Pochopit, že to je jako jízda po zdrojovém kódu, kde pokud jsme v komentáři, tak až narazíme na */
a tak tím komentář skončí, kdežto naopak když jsme v platném kódu, tak narazíme jako první na /*
a tím komentář začne. A pochopit, že to může fungovat jen s jednou hvězdičkou uvnitř, protože tím, že je jedna ji "spotřebuje" již začátek komentáře /*
a proto se závěrečné */
neuplatní jako konec komentáře.
Možná si teď říkáte, jak je to bezva, že máme řádkové a blokové komentáře a lze dělat takovéto věci v PHP i v JS. A že by se to třeba někdy hodilo i v .css, kde to ovšem nepůjde neboť tam není řádkový komentář. Mohu vás ujistit, že invertovat zakomentování dvou bloků jedním jediným znakem lze i v .css. Tj. tuto funkci lze udělat i jen a pouze pomocí blokového komentáře. Až to zvládnete, tak se tím můžete pochlubit v diskuzi.
A v příštím článku si ukážeme jak komentářový přepínač využít pro přepínání jazyka v Combiscriptu