Nette Documentation Preview

syntax
Kezdő lépések Tracyvel
**********************

<div class=perex>

A Tracy könyvtár egy hasznos segédprogram a mindennapi PHP programozók számára. Segít a következőkben:

- a hibák gyors felismerésében és kijavításában
- a hibák naplózása
- változók dumpolása
- a szkriptek/lekérdezések végrehajtási idejének mérése
- a memóriafogyasztás megtekintése

</div>


A PHP tökéletes nyelv a nehezen észrevehető hibák készítésére, mert nagy rugalmasságot biztosít a programozóknak. A Tracy\Debugger emiatt még értékesebb. Ez egy végső eszköz a diagnosztikai eszközök között.

Ha először találkozol Tracyvel, hidd el, az életed kezd kettéválni egy Tracy előtti és egy vele való életre. Üdvözöljük a jó résznél!


Telepítés és követelmények .[#toc-installation-and-requirements]
================================================================

A Tracy telepítésének legjobb módja a [legújabb csomag letöltés](https://github.com/nette/tracy/releases) vagy a Composer használata:

```shell
composer require tracy/tracy
```

Alternatívaként letöltheti a teljes csomagot vagy a [tracy.phar |https://github.com/nette/tracy/releases] fájlt.


Használat .[#toc-usage]
=======================

A Tracy aktiválása a `Tracy\Debugger::enable()' metódus meghívásával történik a program elején a lehető leghamarabb, mielőtt bármilyen kimenet elküldésre kerülne:

```php
use Tracy\Debugger;

require 'vendor/autoload.php'; // alternatívaként tracy.phar

Debugger::enable();
```

Az első dolog, amit az oldalon észreveszel, a Tracy Bar a jobb alsó sarokban. Ha nem látja, az azt jelentheti, hogy a Tracy termelési üzemmódban fut.
Ez azért van, mert a Tracy biztonsági okokból csak a localhost-on látható. Ha tesztelni szeretné, hogy működik-e, a `Debugger::enable(Debugger::Development)` paraméter segítségével ideiglenesen fejlesztési üzemmódba helyezheti.


Tracy Bar .[#toc-tracy-bar]
===========================

A Tracy Bar egy lebegő panel. Az oldal jobb alsó sarkában jelenik meg. Az egérrel mozgatható. Az oldal újratöltése után megjegyzi a pozícióját.

[* tracy-bar.webp *]:https://nette.github.io/tracy/tracy-debug-bar.html

Más hasznos paneleket is hozzáadhat a Tracy Barhoz. Érdekeseket találhatsz az [addonokban |https://componette.org], vagy [létrehozhatod a sajátodat |extensions].

Ha nem szeretné megjeleníteni a Tracy Bar-t, állítsa be:

```php
Debugger::$showBar = false;
```


Hibák és kivételek megjelenítése .[#toc-visualization-of-errors-and-exceptions]
===============================================================================

Bizonyára tudod, hogyan jelzi a PHP a hibákat: az oldal forráskódjában van valami ilyesmi:

/--pre .{font-size: 90%}
<b>Parse error</b>:  syntax error, unexpected '}' in <b>HomePresenter.php</b> on line <b>15</b>
\--

vagy el nem fogott kivétel:

/--pre .{font-size: 90%}
<b>Fatal error</b>:  Uncaught Nette\MemberAccessException: Call to undefined method Nette\Application\UI\Form::addTest()? in /sandbox/vendor/nette/utils/src/Utils/ObjectMixin.php:100
Stack trace:
#0 /sandbox/vendor/nette/utils/src/Utils/Object.php(75): Nette\Utils\ObjectMixin::call(Object(Nette\Application\UI\Form), 'addTest', Array)
#1 /sandbox/app/Forms/SignFormFactory.php(32): Nette\Object->__call('addTest', Array)
#2 /sandbox/app/UI/Sign/SignPresenter.php(21): App\Forms\SignFormFactory->create()
#3 /sandbox/vendor/nette/component-model/src/ComponentModel/Container.php(181): App\UI\Sign\SignPresenter->createComponentSignInForm('signInForm')
#4 /sandbox/vendor/nette/component-model/src/ComponentModel/Container.php(139): Nette\ComponentModel\Container->createComponent('signInForm')
#5 /sandbox/temp/cache/latte/15206b353f351f6bfca2c36cc.php(17): Nette\ComponentModel\Co in <b>/sandbox/vendor/nette/utils/src/Utils/ObjectMixin.php</b> on line <b>100</b><br />
\--

Nem olyan könnyű eligazodni ebben a kimenetben. Ha engedélyezi a Tracy funkciót, mind a hibák, mind a kivételek teljesen más formában jelennek meg:

[* tracy-exception.webp .{url:-} *]

A hibaüzenet szó szerint ordít. Látható a forráskód egy része a kiemelt sorral, ahol a hiba előfordult. Az üzenet világosan megmagyarázza a hibát. Az egész oldal [interaktív, próbálja ki](https://nette.github.io/tracy/tracy-exception.html).

És tudod mit? A végzetes hibákat ugyanígy rögzíti és megjeleníti. Nem kell semmilyen bővítményt telepíteni (kattintson az élő példa megtekintéséhez):

[* tracy-error.webp .{url:-} *]

Az olyan hibák, mint például egy változó nevének elírása vagy egy nem létező fájl megnyitásának kísérlete E_NOTICE vagy E_WARNING szintű jelentéseket generál. Ezek könnyen figyelmen kívül hagyhatók és/vagy teljesen elrejthetők egy weboldal grafikai elrendezésében. Hagyja, hogy a Tracy kezelje ezeket:

[* tracy-notice2.webp *]:https://nette.github.io/tracy/tracy-debug-bar.html

Vagy hibaként jelenhetnek meg:

```php
Debugger::$strictMode = true; // minden hiba megjelenítése
Debugger::$strictMode = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED; // minden hiba, kivéve az elévült hibaüzeneteket.
```

[* tracy-notice.webp .{url:-} *]

Megjegyzés: A Tracy aktiválásakor a hibajelentési szint E_ALL-ra változik. Ha ezt meg akarja változtatni, tegye meg a `enable()` meghívása után.


Fejlesztési vs. termelési üzemmód .[#toc-development-vs-production-mode]
========================================================================

Mint látható, Tracy elég beszédes, ami a fejlesztői környezetben értékelhető, míg a produktív szerveren katasztrófát okozna. Ott ugyanis nem jelenhet meg hibakeresési információ. A Tracy ezért rendelkezik **környezet automatikus felismeréssel**, és ha a példát éles szerveren futtatjuk, a hiba megjelenítés helyett naplózásra kerül, és a látogató csak egy felhasználóbarát üzenetet lát:

[* tracy-error2.webp .{url:-} *]

A termelési mód elnyomja a [dump() |dumper] segítségével küldött összes hibakeresési információ megjelenítését, és természetesen a PHP által generált összes hibaüzenetet is. Tehát ha elfelejtettél néhány `dump($obj)` címet a kódban, nem kell aggódnod, a termelő szerveren semmi sem fog megjelenni.

Hogyan működik a mód automatikus felismerése? Az üzemmód fejlesztési, ha az alkalmazás localhoston fut (azaz a `127.0.0.1` vagy `::1` IP-címen ) és nincs proxy (azaz a HTTP fejléce). Ellenkező esetben termelési üzemmódban fut.

Ha más esetekben is engedélyezni szeretné a fejlesztési üzemmódot, például egy adott IP-címről hozzáférő fejlesztők számára, akkor azt a `enable()` módszer paramétereként adhatja meg:

```php
Debugger::enable('23.75.345.200'); // IP-címek tömbjét is megadhatja
```

Mindenképpen javasoljuk az IP-cím és egy cookie kombinálását. Tároljon egy titkos tokent, pl. `secret1234`, a `tracy-debug` cookie-ban, és így csak azon fejlesztők számára aktiválja a fejlesztési módot, akik egy adott IP-címről lépnek be, és akiknek a cookie-ban szerepel az említett token:

```php
Debugger::enable('secret1234@23.75.345.200');
```

A fejlesztési/gyártási módot közvetlenül is beállíthatja a `Debugger::Development` vagy a `Debugger::Production` konstansok segítségével, a `enable()` módszer paramétereként.

.[note]
Ha a Nette keretrendszert használja, nézze meg, hogyan kell [beállítani a módot |application:bootstrap#Development vs Production Mode], és ezután a Tracy esetében is használni fogja.


Hibanaplózás .[#toc-error-logging]
==================================

Termelési üzemmódban a Tracy automatikusan naplózza az összes hibát és kivételt egy szöveges naplóba. Ahhoz, hogy a naplózás megtörténjen, a naplókönyvtár abszolút elérési útját be kell állítani a `$logDirectory` változóba, vagy a `enable()` metódus második paramétereként kell átadni:

```php
Debugger::$logDirectory = __DIR__ . '/log';
```

A hibanaplózás rendkívül hasznos. Képzeld el, hogy az alkalmazásod összes felhasználója valójában bétatesztelő, akik ingyenesen végeznek elsőrangú munkát a hibák felkutatásában, és bolond lennél, ha az értékes jelentéseiket észrevétlenül a kukába dobnád.

Ha saját üzeneteket vagy elkapott kivételeket kell naplóznod, használd a `log()` módszert:

```php
Debugger::log('Váratlan hiba'); // szöveges üzenet

try {
	criticalOperation();
} catch (Exception $e) {
	Debugger::log($e); // log kivétel
	// vagy
	Debugger::log($e, Debugger::ERROR); // e-mail értesítést is küld.
}
```

If you want Tracy to log PHP errors like `E_NOTICE` or `E_WARNING` with detailed information (HTML report), set `Debugger::$logSeverity`:

```php
Debugger::$logSeverity = E_NOTICE | E_WARNING;
```

Egy igazi szakember számára a hibanapló fontos információforrás, és minden új hibáról azonnal értesülni akar. A Tracy segít neki ebben. Képes arra, hogy minden új hibajegyzékről e-mailt küldjön. A $email változó azonosítja, hogy hova küldje ezeket az e-maileket:

```php
Debugger::$email = 'admin@example.com';
```

Ha a teljes Nette keretrendszert használja, akkor ezt és másokat is beállíthat a [konfigurációs fájlban |nette:configuring].

Hogy megvédje az e-mail postafiókját az elárasztástól, a Tracy **csak egy üzenetet** küld, és létrehoz egy fájlt: `email-sent`. Amikor egy fejlesztő megkapja az e-mail értesítést, ellenőrzi a naplót, kijavítja az alkalmazását, és törli a `email-sent` felügyeleti fájlt. Ez újra aktiválja az e-mail küldést.


Fájlok megnyitása a szerkesztőben .[#toc-opening-files-in-the-editor]
=====================================================================

Amikor a hibaoldal megjelenik, a fájlnevekre kattintva megnyílnak a szerkesztőprogramban, a kurzor a megfelelő soron lesz. A fájlokat létre is lehet hozni (művelet `create file`) vagy hibát javítani bennük (művelet `fix it`). Ehhez a [böngészőt és a rendszert kell beállítani |open-files-in-ide].


Támogatott PHP-verziók .[#toc-supported-php-versions]
=====================================================

| Tracy | kompatibilis a PHP-vel
|-----------|--------------------
| Tracy 2.10 – 3.0 | PHP 8.0 – 8.3
| Tracy 2.9 | PHP 7.2 - 8.2
| Tracy 2.8 | PHP 7.2 - 8.1
| Tracy 2.6 - 2.7 | PHP 7.1 - 8.0
| Tracy 2.5 | PHP 5.4 - 7.4
| Tracy 2.4 | PHP 5.4 - 7.2

A legújabb javítási verziókra vonatkozik.


Portok .[#toc-ports]
====================

Ez egy lista a más keretrendszerek és CMS-ek nem hivatalos portjairól:

- [Drupal 7](https://www.drupal.org/project/traced)
- Laravel framework: [recca0120/laravel-tracy](https://github.com/recca0120/laravel-tracy), [whipsterCZ/laravel-tracy](https://github.com/whipsterCZ/laravel-tracy)
- [OpenCart](https://github.com/BurdaPraha/oc_tracy)
- [ProcessWire CMS/CMF](https://github.com/adrianbj/TracyDebugger)
- [Slim Framework](https://github.com/runcmf/runtracy)
- Symfony framework: [kutny/tracy-bundle](https://github.com/kutny/tracy-bundle), [VasekPurchart/Tracy-Blue-Screen-Bundle](https://github.com/VasekPurchart/Tracy-Blue-Screen-Bundle)
- [Wordpress](https://github.com/ktstudio/WP-Tracy)

Kezdő lépések Tracyvel

A Tracy könyvtár egy hasznos segédprogram a mindennapi PHP programozók számára. Segít a következőkben:

  • a hibák gyors felismerésében és kijavításában
  • a hibák naplózása
  • változók dumpolása
  • a szkriptek/lekérdezések végrehajtási idejének mérése
  • a memóriafogyasztás megtekintése

A PHP tökéletes nyelv a nehezen észrevehető hibák készítésére, mert nagy rugalmasságot biztosít a programozóknak. A Tracy\Debugger emiatt még értékesebb. Ez egy végső eszköz a diagnosztikai eszközök között.

Ha először találkozol Tracyvel, hidd el, az életed kezd kettéválni egy Tracy előtti és egy vele való életre. Üdvözöljük a jó résznél!

Telepítés és követelmények

A Tracy telepítésének legjobb módja a legújabb csomag letöltés vagy a Composer használata:

composer require tracy/tracy

Alternatívaként letöltheti a teljes csomagot vagy a tracy.phar fájlt.

Használat

A Tracy aktiválása a `Tracy\Debugger::enable()' metódus meghívásával történik a program elején a lehető leghamarabb, mielőtt bármilyen kimenet elküldésre kerülne:

use Tracy\Debugger;

require 'vendor/autoload.php'; // alternatívaként tracy.phar

Debugger::enable();

Az első dolog, amit az oldalon észreveszel, a Tracy Bar a jobb alsó sarokban. Ha nem látja, az azt jelentheti, hogy a Tracy termelési üzemmódban fut. Ez azért van, mert a Tracy biztonsági okokból csak a localhost-on látható. Ha tesztelni szeretné, hogy működik-e, a Debugger::enable(Debugger::Development) paraméter segítségével ideiglenesen fejlesztési üzemmódba helyezheti.

Tracy Bar

A Tracy Bar egy lebegő panel. Az oldal jobb alsó sarkában jelenik meg. Az egérrel mozgatható. Az oldal újratöltése után megjegyzi a pozícióját.

Más hasznos paneleket is hozzáadhat a Tracy Barhoz. Érdekeseket találhatsz az addonokban, vagy létrehozhatod a sajátodat.

Ha nem szeretné megjeleníteni a Tracy Bar-t, állítsa be:

Debugger::$showBar = false;

Hibák és kivételek megjelenítése

Bizonyára tudod, hogyan jelzi a PHP a hibákat: az oldal forráskódjában van valami ilyesmi:

Parse error:  syntax error, unexpected '}' in HomePresenter.php on line 15

vagy el nem fogott kivétel:

Fatal error:  Uncaught Nette\MemberAccessException: Call to undefined method Nette\Application\UI\Form::addTest()? in /sandbox/vendor/nette/utils/src/Utils/ObjectMixin.php:100
Stack trace:
#0 /sandbox/vendor/nette/utils/src/Utils/Object.php(75): Nette\Utils\ObjectMixin::call(Object(Nette\Application\UI\Form), 'addTest', Array)
#1 /sandbox/app/Forms/SignFormFactory.php(32): Nette\Object->__call('addTest', Array)
#2 /sandbox/app/UI/Sign/SignPresenter.php(21): App\Forms\SignFormFactory->create()
#3 /sandbox/vendor/nette/component-model/src/ComponentModel/Container.php(181): App\UI\Sign\SignPresenter->createComponentSignInForm('signInForm')
#4 /sandbox/vendor/nette/component-model/src/ComponentModel/Container.php(139): Nette\ComponentModel\Container->createComponent('signInForm')
#5 /sandbox/temp/cache/latte/15206b353f351f6bfca2c36cc.php(17): Nette\ComponentModel\Co in /sandbox/vendor/nette/utils/src/Utils/ObjectMixin.php on line 100

Nem olyan könnyű eligazodni ebben a kimenetben. Ha engedélyezi a Tracy funkciót, mind a hibák, mind a kivételek teljesen más formában jelennek meg:

A hibaüzenet szó szerint ordít. Látható a forráskód egy része a kiemelt sorral, ahol a hiba előfordult. Az üzenet világosan megmagyarázza a hibát. Az egész oldal interaktív, próbálja ki.

És tudod mit? A végzetes hibákat ugyanígy rögzíti és megjeleníti. Nem kell semmilyen bővítményt telepíteni (kattintson az élő példa megtekintéséhez):

Az olyan hibák, mint például egy változó nevének elírása vagy egy nem létező fájl megnyitásának kísérlete E_NOTICE vagy E_WARNING szintű jelentéseket generál. Ezek könnyen figyelmen kívül hagyhatók és/vagy teljesen elrejthetők egy weboldal grafikai elrendezésében. Hagyja, hogy a Tracy kezelje ezeket:

Vagy hibaként jelenhetnek meg:

Debugger::$strictMode = true; // minden hiba megjelenítése
Debugger::$strictMode = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED; // minden hiba, kivéve az elévült hibaüzeneteket.

Megjegyzés: A Tracy aktiválásakor a hibajelentési szint E_ALL-ra változik. Ha ezt meg akarja változtatni, tegye meg a enable() meghívása után.

Fejlesztési vs. termelési üzemmód

Mint látható, Tracy elég beszédes, ami a fejlesztői környezetben értékelhető, míg a produktív szerveren katasztrófát okozna. Ott ugyanis nem jelenhet meg hibakeresési információ. A Tracy ezért rendelkezik környezet automatikus felismeréssel, és ha a példát éles szerveren futtatjuk, a hiba megjelenítés helyett naplózásra kerül, és a látogató csak egy felhasználóbarát üzenetet lát:

A termelési mód elnyomja a dump() segítségével küldött összes hibakeresési információ megjelenítését, és természetesen a PHP által generált összes hibaüzenetet is. Tehát ha elfelejtettél néhány dump($obj) címet a kódban, nem kell aggódnod, a termelő szerveren semmi sem fog megjelenni.

Hogyan működik a mód automatikus felismerése? Az üzemmód fejlesztési, ha az alkalmazás localhoston fut (azaz a 127.0.0.1 vagy ::1 IP-címen ) és nincs proxy (azaz a HTTP fejléce). Ellenkező esetben termelési üzemmódban fut.

Ha más esetekben is engedélyezni szeretné a fejlesztési üzemmódot, például egy adott IP-címről hozzáférő fejlesztők számára, akkor azt a enable() módszer paramétereként adhatja meg:

Debugger::enable('23.75.345.200'); // IP-címek tömbjét is megadhatja

Mindenképpen javasoljuk az IP-cím és egy cookie kombinálását. Tároljon egy titkos tokent, pl. secret1234, a tracy-debug cookie-ban, és így csak azon fejlesztők számára aktiválja a fejlesztési módot, akik egy adott IP-címről lépnek be, és akiknek a cookie-ban szerepel az említett token:

Debugger::enable('secret1234@23.75.345.200');

A fejlesztési/gyártási módot közvetlenül is beállíthatja a Debugger::Development vagy a Debugger::Production konstansok segítségével, a enable() módszer paramétereként.

Ha a Nette keretrendszert használja, nézze meg, hogyan kell beállítani a módot, és ezután a Tracy esetében is használni fogja.

Hibanaplózás

Termelési üzemmódban a Tracy automatikusan naplózza az összes hibát és kivételt egy szöveges naplóba. Ahhoz, hogy a naplózás megtörténjen, a naplókönyvtár abszolút elérési útját be kell állítani a $logDirectory változóba, vagy a enable() metódus második paramétereként kell átadni:

Debugger::$logDirectory = __DIR__ . '/log';

A hibanaplózás rendkívül hasznos. Képzeld el, hogy az alkalmazásod összes felhasználója valójában bétatesztelő, akik ingyenesen végeznek elsőrangú munkát a hibák felkutatásában, és bolond lennél, ha az értékes jelentéseiket észrevétlenül a kukába dobnád.

Ha saját üzeneteket vagy elkapott kivételeket kell naplóznod, használd a log() módszert:

Debugger::log('Váratlan hiba'); // szöveges üzenet

try {
	criticalOperation();
} catch (Exception $e) {
	Debugger::log($e); // log kivétel
	// vagy
	Debugger::log($e, Debugger::ERROR); // e-mail értesítést is küld.
}

If you want Tracy to log PHP errors like E_NOTICE or E_WARNING with detailed information (HTML report), set Debugger::$logSeverity:

Debugger::$logSeverity = E_NOTICE | E_WARNING;

Egy igazi szakember számára a hibanapló fontos információforrás, és minden új hibáról azonnal értesülni akar. A Tracy segít neki ebben. Képes arra, hogy minden új hibajegyzékről e-mailt küldjön. A $email változó azonosítja, hogy hova küldje ezeket az e-maileket:

Debugger::$email = 'admin@example.com';

Ha a teljes Nette keretrendszert használja, akkor ezt és másokat is beállíthat a konfigurációs fájlban.

Hogy megvédje az e-mail postafiókját az elárasztástól, a Tracy csak egy üzenetet küld, és létrehoz egy fájlt: email-sent. Amikor egy fejlesztő megkapja az e-mail értesítést, ellenőrzi a naplót, kijavítja az alkalmazását, és törli a email-sent felügyeleti fájlt. Ez újra aktiválja az e-mail küldést.

Fájlok megnyitása a szerkesztőben

Amikor a hibaoldal megjelenik, a fájlnevekre kattintva megnyílnak a szerkesztőprogramban, a kurzor a megfelelő soron lesz. A fájlokat létre is lehet hozni (művelet create file) vagy hibát javítani bennük (művelet fix it). Ehhez a böngészőt és a rendszert kell beállítani.

Támogatott PHP-verziók

Tracy kompatibilis a PHP-vel
Tracy 2.10 – 3.0 PHP 8.0 – 8.3
Tracy 2.9 PHP 7.2 – 8.2
Tracy 2.8 PHP 7.2 – 8.1
Tracy 2.6 – 2.7 PHP 7.1 – 8.0
Tracy 2.5 PHP 5.4 – 7.4
Tracy 2.4 PHP 5.4 – 7.2

A legújabb javítási verziókra vonatkozik.

Portok

Ez egy lista a más keretrendszerek és CMS-ek nem hivatalos portjairól: