
# Začíname

## Inštalácia

```bash
composer require shikiphp/shikiphp
```

shikiphp vyžaduje PHP 8.2 alebo novší s `ext-json` a `ext-mbstring` — obe sú povolené takmer v každej zostave PHP. Nič ďalšie: žiadny Node, natívna väzba Oniguruma ani dodatočné rozšírenia.

## Váš prvý blok

Najrýchlejšie začnete so statickou fasádou `Shikiphp`. Zadajte svoj kód, ID jazyka a ID témy:

```php
use Shikiphp\Shikiphp;

$html = Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
    return "Hello, {$name}!";
}
PHP, [
    'lang'  => 'php',
    'theme' => 'github-dark',
]);

echo $html;
```

`codeToHtml` vráti úplný blok `<pre class="shiki …">` s vlastnými štýlmi. Farby popredia a pozadia sa zapíšu priamo do prvku `<pre>`, takže sa vykreslí správne aj bez ďalšej šablóny so štýlmi.

## Dve témy (svetlá a tmavá)

Namiesto jednej témy `theme` zadajte mapu `themes`. shikiphp vytvorí premenné CSS (napríklad Shiki), takže jeden vykreslený blok sa prispôsobí svetlému aj tmavému režimu:

```php
use Shikiphp\Shikiphp;

$code = 'const answer: number = 42';

echo Shikiphp::codeToHtml($code, [
    'lang'   => 'ts',
    'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
```

Predvolene sa farby témy `light` používajú priamo a `dark` sa sprístupní prostredníctvom premenných `--shiki-dark`. Tmavú tému aktivujte krátkym kódom CSS — rovnaký úryvok používa dokumentácia Shiki:

```css
html.dark .shiki,
html.dark .shiki span {
  color: var(--shiki-dark) !important;
  background-color: var(--shiki-dark-bg) !important;
  /* and font styles */
  font-style: var(--shiki-dark-font-style) !important;
  font-weight: var(--shiki-dark-font-weight) !important;
  text-decoration: var(--shiki-dark-text-decoration) !important;
}
```

Môžete si vybrať, ktorá téma bude predvolene vložená priamo, pomocou možnosti [`defaultColor`](https://shikiphp.inline0.dev/sk/docs/options#defaultcolor), alebo nastaviť `defaultColor: false` tak, aby sa vytvárali iba premenné.

## ID jazykov a aliasy

Na jazyky sa odkazuje pomocou ich ID Shiki alebo aliasu — `php`, `ts`, `js`, `rust`, `python`, `html` atď. V časti [Jazyky](https://shikiphp.inline0.dev/sk/docs/languages) nájdete postup na vypísanie všetkého obsahu balíka a v časti [Témy](https://shikiphp.inline0.dev/sk/docs/themes) ID tém.

## Opätovné použitie zvýrazňovača

Fasáda vytvára zvýrazňovač `Highlighter` z balíka až pri prvom použití a ukladá ho do vyrovnávacej pamäte, takže opakované volania `Shikiphp::codeToHtml` znovu používajú tie isté vyrovnávacie pamäte gramatík a tém. Ak potrebujete rozšírené API (výstup HAST, vlastné gramatiky, mriežky tokenov), získajte inštanciu priamo:

```php
use Shikiphp\Shikiphp;

$code = 'fn main() {}';

$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
```

Úplné rozhranie nájdete v časti [API](https://shikiphp.inline0.dev/sk/docs/api).
