İçeriğe geç

Başlarken

Yükleme

Kabuk
composer require shikiphp/shikiphp

shikiphp, ext-json ve ext-mbstring etkinleştirilmiş olarak PHP 8.2 veya daha yenisini gerektirir; bunlar neredeyse tüm PHP derlemelerinde etkin olur. Başka hiçbir şeye gerek yok: Node yok, yerel Oniguruma bağlaması yok, ek uzantı yok.

İlk kod bloğunuz

Statik Shikiphp facade'ı başlamak için en hızlı yoldur. Kodunuzu, dil kimliğini ve tema kimliğini geçin:

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, kendi stillerini içeren eksiksiz bir <pre class="shiki …"> bloğu döndürür. Ön plan ve arka plan renkleri doğrudan <pre> üzerine yazılır; böylece ek stil sayfası olmadan doğru şekilde görüntülenir.

Çift temalar (açık ve koyu)

Tek bir theme yerine themes eşlemesi geçin. shikiphp, CSS değişkenleri (Shiki gibi) üretir; böylece görüntülenen tek bir blok açık ve koyu moda uyum sağlar:

PHP
use Shikiphp\Shikiphp;

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

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

Varsayılan olarak light temasının renkleri satır içi varsayılanlardır ve dark, --shiki-dark değişkenleriyle sunulur. Koyu temayı az miktarda CSS ile etkinleştirin; Shiki belgelerindeki aynı kod parçası:

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

Satır içi varsayılan olarak hangi temanın seçileceğini defaultColor seçeneğiyle belirleyebilir veya yalnızca değişkenleri üretmek için defaultColor: false ayarını yapabilirsiniz.

Dil kimlikleri ve takma adlar

Dillere Shiki kimlikleri veya takma adlarıyla başvurulur: php, ts, js, rust, python, html vb. Pakette bulunan her şeyi listeleme hakkında bilgi için Diller bölümüne, tema kimlikleri için Temalar bölümüne bakın.

Vurgulayıcıyı yeniden kullanma

Facade, paketteki bir Highlighter öğesini ihtiyaç duyulduğunda oluşturup önbelleğe alır; bu nedenle Shikiphp::codeToHtml için yinelenen çağrılar aynı dilbilgisi ve tema önbelleklerini kullanır. Daha kapsamlı API (HAST çıktısı, özel dilbilgileri, belirteç ızgaraları) gerekiyorsa örneği doğrudan alın:

PHP
use Shikiphp\Shikiphp;

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

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

Tüm özellikler için API bölümüne bakın.