
# Aan de slag

## Installeren

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

shikiphp vereist PHP 8.2 of hoger met `ext-json` en `ext-mbstring` — beide
zijn ingeschakeld in vrijwel elke PHP-build. Verder niets: geen Node, geen native
Oniguruma-binding en geen extra extensies.

## Uw eerste blok

De statische `Shikiphp`-facade is de snelste manier om aan de slag te gaan. Geef uw code, een taal-
id en een thema-id door:

```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` retourneert een compleet, zelfopgemaakt `<pre class="shiki …">`-blok. De voorgrond- en achtergrondkleuren staan inline op het `<pre>`, zodat het correct wordt weergegeven zonder extra stylesheet.

## Dubbele thema's (licht en donker)

Geef in plaats van één `theme` een `themes`-map door. shikiphp genereert CSS-variabelen
(zoals Shiki), zodat één weergegeven blok zich aan de lichte en donkere modus aanpast:

```php
use Shikiphp\Shikiphp;

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

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

Standaard zijn de kleuren van het `light`-thema de inline standaardwaarden en wordt `dark` beschikbaar gemaakt via `--shiki-dark`-variabelen. Activeer het donkere thema met een kleine hoeveelheid CSS — hetzelfde fragment dat Shiki documenteert:

```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;
}
```

U kunt met de optie [`defaultColor`](https://shikiphp.inline0.dev/nl/docs/options#defaultcolor) kiezen welk thema de inline standaard is, of `defaultColor: false` instellen om alleen variabelen te genereren.

## Taal-id's en aliassen

Talen worden aangeduid met hun Shiki-id of alias — `php`, `ts`, `js`,
`rust`, `python`, `html` enzovoort. Zie [Talen](https://shikiphp.inline0.dev/nl/docs/languages) voor informatie over
alle meegeleverde talen en [Thema's](https://shikiphp.inline0.dev/nl/docs/themes) voor de thema-id's.

## De markeerder hergebruiken

De facade maakt indien nodig een meegeleverde `Highlighter` aan en slaat die op in de cache, zodat herhaalde aanroepen van `Shikiphp::codeToHtml` dezelfde grammatica- en themacaches hergebruiken. Als u de uitgebreidere API nodig hebt (HAST-uitvoer, aangepaste grammatica's, tokenrasters), haal de instantie dan rechtstreeks op:

```php
use Shikiphp\Shikiphp;

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

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

Zie [API](https://shikiphp.inline0.dev/nl/docs/api) voor het volledige overzicht.
