
# Ξεκινώντας

## Εγκατάσταση

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

Το shikiphp απαιτεί PHP 8.2 ή νεότερη έκδοση με `ext-json` και `ext-mbstring` — και τα δύο είναι ενεργοποιημένα σε σχεδόν κάθε έκδοση PHP. Δεν απαιτείται τίποτε άλλο: ούτε Node, ούτε εγγενής σύνδεση Oniguruma, ούτε πρόσθετες επεκτάσεις.

## Το πρώτο σας μπλοκ

Το στατικό facade `Shikiphp` είναι ο πιο γρήγορος τρόπος για να ξεκινήσετε. Περάστε τον κώδικα, ένα id γλώσσας και ένα id θέματος:

```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` επιστρέφει ένα πλήρες, αυτομορφοποιημένο μπλοκ `<pre class="shiki …">`. Τα χρώματα προσκηνίου και φόντου γράφονται inline στο `<pre>`, ώστε να αποδίδεται σωστά χωρίς πρόσθετο stylesheet.

## Διπλά θέματα (φωτεινό και σκοτεινό)

Αντί για ένα μόνο `theme`, περάστε έναν χάρτη `themes`. Το shikiphp εκπέμπει μεταβλητές CSS (όπως το Shiki), ώστε ένα μπλοκ που έχει αποδοθεί να προσαρμόζεται στη φωτεινή και στη σκοτεινή λειτουργία:

```php
use Shikiphp\Shikiphp;

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

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

Από προεπιλογή, τα χρώματα του θέματος `light` χρησιμοποιούνται inline και το `dark` διατίθεται μέσω μεταβλητών `--shiki-dark`. Ενεργοποιήστε το σκοτεινό θέμα με λίγο CSS — το ίδιο απόσπασμα κώδικα που τεκμηριώνει το 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;
}
```

Μπορείτε να επιλέξετε ποιο θέμα θα είναι προεπιλεγμένο inline με την επιλογή [`defaultColor`](https://shikiphp.inline0.dev/el/docs/options#defaultcolor) ή να ορίσετε το `defaultColor: false` ώστε να εκπέμπονται μόνο μεταβλητές.

## Id γλωσσών και ψευδώνυμα

Οι γλώσσες αναφέρονται με το id ή το ψευδώνυμο Shiki — `php`, `ts`, `js`,
`rust`, `python`, `html` κ.ο.κ. Δείτε τις [Γλώσσες](https://shikiphp.inline0.dev/el/docs/languages) για να μάθετε πώς να εμφανίσετε όλα όσα περιλαμβάνονται και τα [Θέματα](https://shikiphp.inline0.dev/el/docs/themes) για τα id θεμάτων.

## Επαναχρησιμοποίηση του εργαλείου επισήμανσης

Το facade δημιουργεί και αποθηκεύει προσωρινά ένα ενσωματωμένο `Highlighter` μόνο όταν χρειάζεται, ώστε οι επαναλαμβανόμενες κλήσεις στο `Shikiphp::codeToHtml` να επαναχρησιμοποιούν τις ίδιες κρυφές μνήμες γραμματικών και θεμάτων. Αν χρειάζεστε το πληρέστερο API (έξοδο HAST, προσαρμοσμένες γραμματικές, πλέγματα token), αποκτήστε απευθείας την παρουσία:

```php
use Shikiphp\Shikiphp;

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

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

Δείτε το [API](https://shikiphp.inline0.dev/el/docs/api) για την πλήρη διεπαφή.
