Memulai
Instalasi
composer require shikiphp/shikiphp
shikiphp memerlukan PHP 8.2 atau lebih baru dengan ext-json dan ext-mbstring — keduanya
aktif di hampir setiap build PHP. Tidak ada yang lain: tanpa Node, tanpa binding
Oniguruma native, tanpa ekstensi tambahan.
Blok pertama Anda
Facade statis Shikiphp adalah cara tercepat untuk memulai. Berikan kode Anda, id bahasa,
dan id tema:
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 mengembalikan blok <pre class="shiki …"> lengkap dengan gaya mandiri. Warna latar depan dan
latar belakang ditulis secara inline pada <pre>, sehingga blok ditampilkan
dengan benar tanpa stylesheet tambahan.
Tema ganda (terang dan gelap)
Alih-alih satu theme, berikan peta themes. shikiphp menghasilkan variabel CSS
(seperti Shiki) agar satu blok yang dirender menyesuaikan dengan mode terang dan gelap:
use Shikiphp\Shikiphp;
$code = 'const answer: number = 42';
echo Shikiphp::codeToHtml($code, [
'lang' => 'ts',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
Secara default, warna tema light menjadi nilai inline bawaan dan dark
diekspor melalui variabel --shiki-dark. Aktifkan tema gelap dengan sedikit
CSS — cuplikan yang sama seperti yang didokumentasikan 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;
}
Anda dapat memilih tema yang menjadi nilai inline bawaan dengan opsi
defaultColor, atau mengatur defaultColor: false
agar hanya variabel yang dihasilkan.
Id bahasa dan alias
Bahasa dirujuk berdasarkan id Shiki atau aliasnya — php, ts, js,
rust, python, html, dan seterusnya. Lihat Bahasa untuk cara
mencantumkan semua yang disertakan, dan Tema untuk id tema.
Menggunakan kembali penyorot
Facade secara malas membuat dan menyimpan penyorot Highlighter bawaan, sehingga pemanggilan
berulang ke Shikiphp::codeToHtml menggunakan kembali cache tata bahasa dan tema yang sama. Jika Anda memerlukan
API yang lebih lengkap (keluaran HAST, tata bahasa kustom, kisi token), ambil instance-nya
secara langsung:
use Shikiphp\Shikiphp;
$code = 'fn main() {}';
$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
Lihat API untuk API lengkapnya.