
# Başlarken

## Yükleme

```bash
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`](https://shikiphp.inline0.dev/tr/docs/options#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](https://shikiphp.inline0.dev/tr/docs/languages) bölümüne, tema kimlikleri için [Temalar](https://shikiphp.inline0.dev/tr/docs/themes) 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](https://shikiphp.inline0.dev/tr/docs/api) bölümüne bakın.
