
# Začetek

## Namestitev

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

shikiphp potrebuje PHP 8.2 ali novejši z `ext-json` in `ext-mbstring` — oboje je omogočeno v skoraj vsaki gradnji PHP. Nič drugega: brez Node, izvorne vezave Oniguruma ali dodatnih razširitev.

## Vaš prvi blok

Statična fasada `Shikiphp` je najhitrejša pot do začetka. Podajte svojo kodo, ID jezika in ID teme:

```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` vrne popoln blok `<pre class="shiki …">` z lastnim slogom. Barvi ospredja in ozadja sta zapisani neposredno v `<pre>`, zato se pravilno izriše brez dodatne slogovne datoteke.

## Dve temi (svetla in temna)

Namesto ene teme `theme` podajte zemljevid `themes`. shikiphp odda spremenljivke CSS (kot je Shiki), zato se en izrisani blok prilagaja svetlemu in temnemu načinu:

```php
use Shikiphp\Shikiphp;

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

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

Barve teme `light` so privzeto vgrajene, tema `dark` pa je na voljo prek spremenljivk `--shiki-dark`. Temno temo aktivirajte z nekaj CSS — isti izsek, ki ga dokumentira 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;
}
```

Izberete lahko, katera tema bo privzeta v vgrajenem slogu, z možnostjo [`defaultColor`](https://shikiphp.inline0.dev/sl/docs/options#defaultcolor), ali nastavite `defaultColor: false`, da se oddajo samo spremenljivke.

## ID-ji jezikov in vzdevki

Na jezike se sklicujete z njihovim ID-jem Shiki ali vzdevkom — `php`, `ts`, `js`, `rust`, `python`, `html` itd. Navodila za izpis vsega, kar je vključeno, najdete v razdelku [Jeziki](https://shikiphp.inline0.dev/sl/docs/languages); ID-je tem pa v razdelku [Teme](https://shikiphp.inline0.dev/sl/docs/themes).

## Ponovna uporaba označevalnika kode

Fasada po potrebi ustvari in predpomni vgrajeni označevalnik kode `Highlighter`, zato ponovljeni klici funkcije `Shikiphp::codeToHtml` znova uporabijo iste predpomnilnike slovnic in tem. Če potrebujete zmogljivejši API (izhod HAST, slovnice po meri, mreže žetonov), pridobite primerek neposredno:

```php
use Shikiphp\Shikiphp;

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

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

Za celoten nabor funkcij glejte [API](https://shikiphp.inline0.dev/sl/docs/api).
