Primii pași
Instalare
composer require shikiphp/shikiphp
shikiphp necesită PHP 8.2 sau o versiune ulterioară, cu ext-json și ext-mbstring — ambele activate în aproape toate versiunile PHP. Atât: fără Node, fără legături native Oniguruma și fără extensii suplimentare.
Primul bloc
Fațada statică Shikiphp este cea mai rapidă cale de a începe. Transmiteți codul, ID-ul limbii și ID-ul temei:
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 returnează un bloc <pre class="shiki …"> complet, cu stiluri proprii. Culorile prim-planului și fundalului sunt scrise inline pe <pre>, astfel încât blocul este redat corect fără foi de stil suplimentare.
Teme duale (deschisă și întunecată)
În loc de o singură theme, transmiteți o mapare themes. shikiphp emite variabile CSS (precum Shiki), astfel încât un singur bloc redat se adaptează la modul deschis și întunecat:
use Shikiphp\Shikiphp;
$code = 'const answer: number = 42';
echo Shikiphp::codeToHtml($code, [
'lang' => 'ts',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
În mod implicit, culorile temei light sunt cele inline, iar dark este expusă prin variabile --shiki-dark. Activați tema întunecată cu puțin CSS — același fragment pe care îl documentează Shiki:
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;
}
Puteți alege tema ale cărei culori sunt implicite inline folosind opțiunea defaultColor sau puteți seta defaultColor: false pentru a emite doar variabile.
ID-uri și aliasuri de limbă
Limbile sunt referite prin ID-ul sau aliasul lor Shiki — php, ts, js, rust, python, html și așa mai departe. Consultați Limbi pentru a vedea cum listați tot ce este inclus și Teme pentru ID-urile temelor.
Refolosirea evidențiatorului
Fațada creează și memorează în cache, la cerere, un Highlighter inclus în pachet, astfel încât apelurile repetate la Shikiphp::codeToHtml reutilizează aceleași cache-uri pentru gramatici și teme. Dacă aveți nevoie de API mai complex (rezultat HAST, gramatici personalizate, grile de tokenuri), obțineți direct instanța:
use Shikiphp\Shikiphp;
$code = 'fn main() {}';
$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
Consultați API pentru descrierea completă a interfeței.