24. Komentářový přepínač

Ilustrační obrázek k článku: Komentářový přepínač
Komentářový přepínač je jednoduchý trik, jak ve zdrojovém kódu (PHP nebo JS) jedním znakem zakomentovat jednu část a odkomentovat jinou.

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:

  1. $html = '.......';
  2. /*
  3. require_once($MPdfFile);
  4. $mpdf = new mPDF();
  5. $mpdf->WriteHTML($html);
  6. $mpdf->Output();
  7. /*/
  8. echo $html;
  9. //*/

Nyní stačí na začátek řádku 2. vložit jedno zpětné lomítko a tím:

  1. $html = '.......';
  2. //*
  3. require_once($MPdfFile);
  4. $mpdf = new mPDF();
  5. $mpdf->WriteHTML($html);
  6. $mpdf->Output();
  7. /*/
  8. echo $html;
  9. //*/

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

Předchozí   Následující