Nette Documentation Preview

syntax
Değişkenleri Dökme
******************

Hata ayıklayan herkes, bir değişken hakkında ayrıntılı bilgi yazdıran [php:var_dump] fonksiyonunu bilir. Ne yazık ki çıktısında HTML biçimlendirmesi yoktur ve tek satıra birleşir; HTML kaçışlama sorunlarından söz bile etmiyoruz. Pratikte `var_dump` fonksiyonunu daha elverişli bir fonksiyonla değiştirmek gerekir. O fonksiyon `dump()`'tır.

```php
$arr = [10, 20.2, true, null, 'hello'];

dump($arr);
// ya da Debugger::dump($arr);
```

şu çıktıyı üretir:

[* dump-basic.webp *]

Varsayılan açık temayı koyuya çevirebilirsiniz:

```php
Debugger::$dumpTheme = 'dark';
```

[* dump-dark.webp *]

İç içe geçme derinliğini [Debugger::$maxDepth |api:Tracy\Debugger::$maxDepth] ile, gösterilen dizelerin uzunluğunu [Debugger::$maxLength |api:Tracy\Debugger::$maxLength] ile, gösterilen dizi ya da nesne öğelerinin sayısını ise [Debugger::$maxItems |api:Tracy\Debugger::$maxItems] ile de değiştirebilirsiniz. Doğal olarak düşük değerler render'ı hızlandırır.

```php
Debugger::$maxDepth = 2; // varsayılan: 15
Debugger::$maxLength = 50; // varsayılan: 150
Debugger::$maxItems = 50; // varsayılan: 100
```

`dump()` fonksiyonu, çağrıldığı yeri ve nesnelerde sınıflarının tanımlandığı dosyanın yolunu da gösterebilir. Bunu [Debugger::$showLocation |api:Tracy\Debugger::$showLocation] özelliği denetler:

```php
Debugger::$showLocation = true; // konum bilgisini gösterir
Debugger::$showLocation = false; // gizler
```

Daha ince denetim için `Tracy\Dumper::dump()` metodunu doğrudan çağırın ve `Dumper::LOCATION` seçeneğine `Dumper::LOCATION_CLASS` (yalnızca sınıfların tanımlandığı yer) ya da `Dumper::LOCATION_SOURCE` (ayrıca `dump()` çağrısının yapıldığı yer) değerini verin.

`dump()` fonksiyonunun pratik alternatifleri `dumpe()` (dump & exit) ve `bdump()`'tır. İkincisi, değişken değerlerini Tracy Bar panelinde dökmemizi sağlar. Bu çok elverişlidir; çünkü dökümler sayfa yerleşiminden ayrıdır ve onlara başlık da ekleyebiliriz.

```php
bdump([2, 4, 6, 8], 'ona kadar çift sayılar');
bdump([1, 3, 5, 7, 9], 'ona kadar tek sayılar');
```

[* bardump-en.webp *]


Tracy\Dumper'ı Doğrudan Kullanma
================================

`dump()` fonksiyonunun arkasında, doğrudan da kullanabileceğiniz `Tracy\Dumper` sınıfı vardır. `dump()` fonksiyonunun aksine `Debugger` sınıfına dayanmaz ve tüm ayarlarını bir seçenek dizisinden alır; bu da onu bağımsız betikler, CLI araçları ya da dökümü dize olarak istediğiniz her durum için kullanışlı kılar. Ayarlar `Debugger` yerine diziden geldiğinden varsayılanlar biraz farklıdır: örneğin derinlik `15` yerine `7`'dir.

Metotlar dökümü dize olarak döndürür:

```php
use Tracy\Dumper;

$html = Dumper::toHtml($var, [Dumper::DEPTH => 3]);  // tarayıcı için HTML
$text = Dumper::toText($var);                         // düz metin, örneğin günlük için
$ansi = Dumper::toTerminal($var);                     // terminal için ANSI renkli metin
```

Ya da değişkeni, ortama göre HTML mi terminal çıktısı mı vereceğini otomatik seçen `Dumper::dump()` ile doğrudan yazdırın:

```php
Dumper::dump($var, [Dumper::DEPTH => 3]);
```

.[note]
HTML çıktısı küçük bir stil sayfası ve betik gerektirir. Tracy'nin etkin olduğu bir uygulamanın dışında (yani `Debugger::enable()` olmadan) döküm yaparken, bunları sayfa başlığında bir kez `Dumper::renderAssets()` ile yazdırın. `Dumper::dump()` bunu kendisi yapar, ama `toHtml()` yapmaz.


Seçenekler
----------

Çıktıyı, yukarıdaki tüm metotlara aktarılan bir seçenek dizisi denetler:

| Seçenek | Açıklama | Varsayılan
|--------|-------------|--------
| `Dumper::DEPTH` | en fazla iç içe geçme derinliği | `7`
| `Dumper::TRUNCATE` | dizelerin en fazla uzunluğu | `150`
| `Dumper::ITEMS` | bir dizi/nesnede gösterilecek en fazla öğe sayısı | `100`
| `Dumper::COLLAPSE` | üst düğüm katlansın mı? `true`/`false` ya da en az bu kadar öğesi olunca katla | `14`
| `Dumper::COLLAPSE_COUNT` | iç içe bir düğüm en az bu kadar öğesi olunca katlansın | `7`
| `Dumper::LOCATION` | konumu göster; `true`/`false` ya da `Dumper::LOCATION_CLASS` (yalnızca sınıfların tanımlandığı yer) veya `Dumper::LOCATION_SOURCE` (ayrıca çağrı yeri) | kapalı
| `Dumper::THEME` | renk teması, `light` ya da `dark` | `light`
| `Dumper::HASH` | nesne ID'leri (`#` işareti) ve referanslar (`&` işareti) gösterilsin mi? | `true`
| `Dumper::DEBUGINFO` | nesnenin sihirli `__debugInfo()` metodu kullanılsın mı? | `false`
| `Dumper::KEYS_TO_HIDE` | değerleri `*****` olarak gizlenecek anahtar adlarının dizisi | `[]`
| `Dumper::SCRUBBER` | hassas değerler için `true` döndüren `fn(string $key, mixed $value, ?string $class): bool` callback'i | yok
| `Dumper::OBJECT_EXPORTERS` | nesnelerin özel render'ı, aşağıya bakın | `[]`

`COLLAPSE`, `COLLAPSE_COUNT` ve `THEME` seçenekleri yalnızca etkileşimli HTML çıktısında geçerlidir.

`SCRUBBER` seçeneği hassas değerleri dökümden gizler; tam bir örnek için bkz. [Özel scrubber |recipes#Özel Scrubber].

Örneğin nesne hash'leri olmadan derli toplu bir döküm almak için:

```php
echo Dumper::toText($var, [Dumper::HASH => false]);
```

`toTerminal()` metodunun kullandığı ANSI renkleri `Dumper::$terminalColors` ile özelleştirilebilir.


Nesnelerin Özel Render'ı
========================

Dumper, bir nesneyi varsayılan olarak özelliklerini listeleyerek render eder. Bazen bu en yararlı görünüm değildir; örneğin bir `PhpToken`, türünü okunabilir bir ad yerine sayısal bir ID olarak gösterir. `Dumper::$objectExporters` içine bir exporter kaydederek dumper'a belirli bir sınıfı nasıl render edeceğini öğretebilirsiniz:

```php
use Tracy\Dumper;

Dumper::$objectExporters[PhpToken::class] = function (PhpToken $token, Dumper\Value $value): void {
	$value->value = $token->getTokenName() . ' ' . $token->text;
};
```

Exporter, nesneyi ve onun nasıl gösterileceğini anlatan bir `Tracy\Dumper\Value` nesnesini alır. `$value->value` özelliğine atama yapmak, başlığı (varsayılan olarak sınıf adını) kendi metninizle değiştirir; böylece özellik listesi yerine derli toplu, okunabilir bir etiket elde edersiniz. Ayar, o sınıfın her dökümünde, hatta dizilerin ya da başka nesnelerin içine gömülü nesnelerde bile geçerlidir. Alternatif olarak, exporter'ları yalnızca tek bir çağrı için `Tracy\Dumper::dump()` metodunun `Dumper::OBJECT_EXPORTERS` seçeneğiyle aktarabilirsiniz.

Değişkenleri Dökme

Hata ayıklayan herkes, bir değişken hakkında ayrıntılı bilgi yazdıran var_dump fonksiyonunu bilir. Ne yazık ki çıktısında HTML biçimlendirmesi yoktur ve tek satıra birleşir; HTML kaçışlama sorunlarından söz bile etmiyoruz. Pratikte var_dump fonksiyonunu daha elverişli bir fonksiyonla değiştirmek gerekir. O fonksiyon dump()'tır.

$arr = [10, 20.2, true, null, 'hello'];

dump($arr);
// ya da Debugger::dump($arr);

şu çıktıyı üretir:

Varsayılan açık temayı koyuya çevirebilirsiniz:

Debugger::$dumpTheme = 'dark';

İç içe geçme derinliğini Debugger::$maxDepth ile, gösterilen dizelerin uzunluğunu Debugger::$maxLength ile, gösterilen dizi ya da nesne öğelerinin sayısını ise Debugger::$maxItems ile de değiştirebilirsiniz. Doğal olarak düşük değerler render'ı hızlandırır.

Debugger::$maxDepth = 2; // varsayılan: 15
Debugger::$maxLength = 50; // varsayılan: 150
Debugger::$maxItems = 50; // varsayılan: 100

dump() fonksiyonu, çağrıldığı yeri ve nesnelerde sınıflarının tanımlandığı dosyanın yolunu da gösterebilir. Bunu Debugger::$showLocation özelliği denetler:

Debugger::$showLocation = true; // konum bilgisini gösterir
Debugger::$showLocation = false; // gizler

Daha ince denetim için Tracy\Dumper::dump() metodunu doğrudan çağırın ve Dumper::LOCATION seçeneğine Dumper::LOCATION_CLASS (yalnızca sınıfların tanımlandığı yer) ya da Dumper::LOCATION_SOURCE (ayrıca dump() çağrısının yapıldığı yer) değerini verin.

dump() fonksiyonunun pratik alternatifleri dumpe() (dump & exit) ve bdump()'tır. İkincisi, değişken değerlerini Tracy Bar panelinde dökmemizi sağlar. Bu çok elverişlidir; çünkü dökümler sayfa yerleşiminden ayrıdır ve onlara başlık da ekleyebiliriz.

bdump([2, 4, 6, 8], 'ona kadar çift sayılar');
bdump([1, 3, 5, 7, 9], 'ona kadar tek sayılar');

Tracy\Dumper'ı Doğrudan Kullanma

dump() fonksiyonunun arkasında, doğrudan da kullanabileceğiniz Tracy\Dumper sınıfı vardır. dump() fonksiyonunun aksine Debugger sınıfına dayanmaz ve tüm ayarlarını bir seçenek dizisinden alır; bu da onu bağımsız betikler, CLI araçları ya da dökümü dize olarak istediğiniz her durum için kullanışlı kılar. Ayarlar Debugger yerine diziden geldiğinden varsayılanlar biraz farklıdır: örneğin derinlik 15 yerine 7'dir.

Metotlar dökümü dize olarak döndürür:

use Tracy\Dumper;

$html = Dumper::toHtml($var, [Dumper::DEPTH => 3]);  // tarayıcı için HTML
$text = Dumper::toText($var);                         // düz metin, örneğin günlük için
$ansi = Dumper::toTerminal($var);                     // terminal için ANSI renkli metin

Ya da değişkeni, ortama göre HTML mi terminal çıktısı mı vereceğini otomatik seçen Dumper::dump() ile doğrudan yazdırın:

Dumper::dump($var, [Dumper::DEPTH => 3]);

HTML çıktısı küçük bir stil sayfası ve betik gerektirir. Tracy'nin etkin olduğu bir uygulamanın dışında (yani Debugger::enable() olmadan) döküm yaparken, bunları sayfa başlığında bir kez Dumper::renderAssets() ile yazdırın. Dumper::dump() bunu kendisi yapar, ama toHtml() yapmaz.

Seçenekler

Çıktıyı, yukarıdaki tüm metotlara aktarılan bir seçenek dizisi denetler:

Seçenek Açıklama Varsayılan
Dumper::DEPTH en fazla iç içe geçme derinliği 7
Dumper::TRUNCATE dizelerin en fazla uzunluğu 150
Dumper::ITEMS bir dizi/nesnede gösterilecek en fazla öğe sayısı 100
Dumper::COLLAPSE üst düğüm katlansın mı? true/false ya da en az bu kadar öğesi olunca katla 14
Dumper::COLLAPSE_COUNT iç içe bir düğüm en az bu kadar öğesi olunca katlansın 7
Dumper::LOCATION konumu göster; true/false ya da Dumper::LOCATION_CLASS (yalnızca sınıfların tanımlandığı yer) veya Dumper::LOCATION_SOURCE (ayrıca çağrı yeri) kapalı
Dumper::THEME renk teması, light ya da dark light
Dumper::HASH nesne ID'leri (# işareti) ve referanslar (& işareti) gösterilsin mi? true
Dumper::DEBUGINFO nesnenin sihirli __debugInfo() metodu kullanılsın mı? false
Dumper::KEYS_TO_HIDE değerleri ***** olarak gizlenecek anahtar adlarının dizisi []
Dumper::SCRUBBER hassas değerler için true döndüren fn(string $key, mixed $value, ?string $class): bool callback'i yok
Dumper::OBJECT_EXPORTERS nesnelerin özel render'ı, aşağıya bakın []

COLLAPSE, COLLAPSE_COUNT ve THEME seçenekleri yalnızca etkileşimli HTML çıktısında geçerlidir.

SCRUBBER seçeneği hassas değerleri dökümden gizler; tam bir örnek için bkz. Özel scrubber.

Örneğin nesne hash'leri olmadan derli toplu bir döküm almak için:

echo Dumper::toText($var, [Dumper::HASH => false]);

toTerminal() metodunun kullandığı ANSI renkleri Dumper::$terminalColors ile özelleştirilebilir.

Nesnelerin Özel Render'ı

Dumper, bir nesneyi varsayılan olarak özelliklerini listeleyerek render eder. Bazen bu en yararlı görünüm değildir; örneğin bir PhpToken, türünü okunabilir bir ad yerine sayısal bir ID olarak gösterir. Dumper::$objectExporters içine bir exporter kaydederek dumper'a belirli bir sınıfı nasıl render edeceğini öğretebilirsiniz:

use Tracy\Dumper;

Dumper::$objectExporters[PhpToken::class] = function (PhpToken $token, Dumper\Value $value): void {
	$value->value = $token->getTokenName() . ' ' . $token->text;
};

Exporter, nesneyi ve onun nasıl gösterileceğini anlatan bir Tracy\Dumper\Value nesnesini alır. $value->value özelliğine atama yapmak, başlığı (varsayılan olarak sınıf adını) kendi metninizle değiştirir; böylece özellik listesi yerine derli toplu, okunabilir bir etiket elde edersiniz. Ayar, o sınıfın her dökümünde, hatta dizilerin ya da başka nesnelerin içine gömülü nesnelerde bile geçerlidir. Alternatif olarak, exporter'ları yalnızca tek bir çağrı için Tracy\Dumper::dump() metodunun Dumper::OBJECT_EXPORTERS seçeneğiyle aktarabilirsiniz.