Nette Documentation Preview

syntax
Migrace z PHP do Latte
**********************

.[perex]
Převádíte starší projekt napsaný v čistém PHP na Latte? Máme pro vás nástroj, který tento proces výrazně zjednoduší. [Vyzkoušejte jej online |https://php2latte.nette.org].

Tento užitečný nástroj můžete získat dvěma způsoby:

1. Stáhnout z [GitHubu|https://github.com/nette/latte-tools]
2. Nainstalovat pomocí Composeru:

```shell
composer create-project latte/tools
```

Na rozdíl od jednoduchých nástrojů využívajících regulární výrazy, tento převodník používá sofistikovaný PHP parser. Díky tomu si poradí i s komplexní PHP syntaxí.

Pro převod z PHP do Latte použijte skript `php-to-latte.php`:

```shell
php-to-latte.php input.php [output.latte]
```


Příklad použití
---------------

Podívejme se na konkrétní příklad. Níže je ukázka vstupního PHP souboru (část kódu fóra PunBB):

```php
<h1><span><?= $lang_common['User list'] ?></span></h1>

<div class="blockform">
	<form id="userlist" method="get" action="userlist.php">
		<div class="infldset">
<?php
foreach ($result as $cur_group) {
	if ($cur_group['g_id'] == $show_group) {
		echo "\n\t\t" . '<option value="' . $cur_group['g_id'] . '" selected="selected">'
			. htmlspecialchars($cur_group['g_title']) . '</option>';
	} else {
		echo "\n\t\t" . '<option value="' . $cur_group['g_id'] . '">'
			. htmlspecialchars($cur_group['g_title']) . '</option>';
	}
}
?>
			</select>
			<p class="clearb"><?= $lang_ul['User search info'] ?></p>
		</div>
	</form>
</div>
```

Po zpracování nástrojem získáme následující Latte šablonu:

```latte
<h1><span>{$lang_common['User list']}</span></h1>

<div class="blockform">
	<form id="userlist" method="get" action="userlist.php">
		<div class="infldset">
{foreach $result as $cur_group}
	{if $cur_group[g_id] == $show_group}
		<option value="{$cur_group[g_id]}" selected="selected">{$cur_group[g_title]}</option>
	 {else}
		<option value="{$cur_group[g_id]}">{$cur_group[g_title]}</option>
	{/if}
{/foreach}			</select>
			<p class="clearb">{$lang_ul['User search info']}</p>
		</div>
	</form>
</div>
```

Hlavní výhody tohoto převodu:

1. **Čistší syntaxe**: Latte šablona je čitelnější a snáze udržovatelná.
2. **Automatické escapování**: Latte automaticky escapuje výstup, čímž zvyšuje bezpečnost (např. `htmlspecialchars()` již není potřeba).
3. **Lepší struktura**: Latte tagy (`{foreach}`, `{if}`) jasně oddělují logiku od prezentace.
4. **Zjednodušení**: Odstraňuje nutnost explicitního výpisu pomocí `echo`.

Tento nástroj významně urychluje a zjednodušuje proces migrace z PHP na Latte, což vám umožní rychleji modernizovat vaše projekty a využít všech výhod, které Latte nabízí.

{{leftbar: /@left-menu}}

Migrace z PHP do Latte

Převádíte starší projekt napsaný v čistém PHP na Latte? Máme pro vás nástroj, který tento proces výrazně zjednoduší. Vyzkoušejte jej online.

Tento užitečný nástroj můžete získat dvěma způsoby:

  1. Stáhnout z GitHubu
  2. Nainstalovat pomocí Composeru:
composer create-project latte/tools

Na rozdíl od jednoduchých nástrojů využívajících regulární výrazy, tento převodník používá sofistikovaný PHP parser. Díky tomu si poradí i s komplexní PHP syntaxí.

Pro převod z PHP do Latte použijte skript php-to-latte.php:

php-to-latte.php input.php [output.latte]

Příklad použití

Podívejme se na konkrétní příklad. Níže je ukázka vstupního PHP souboru (část kódu fóra PunBB):

<h1><span><?= $lang_common['User list'] ?></span></h1>

<div class="blockform">
	<form id="userlist" method="get" action="userlist.php">
		<div class="infldset">
<?php
foreach ($result as $cur_group) {
	if ($cur_group['g_id'] == $show_group) {
		echo "\n\t\t" . '<option value="' . $cur_group['g_id'] . '" selected="selected">'
			. htmlspecialchars($cur_group['g_title']) . '</option>';
	} else {
		echo "\n\t\t" . '<option value="' . $cur_group['g_id'] . '">'
			. htmlspecialchars($cur_group['g_title']) . '</option>';
	}
}
?>
			</select>
			<p class="clearb"><?= $lang_ul['User search info'] ?></p>
		</div>
	</form>
</div>

Po zpracování nástrojem získáme následující Latte šablonu:

<h1><span>{$lang_common['User list']}</span></h1>

<div class="blockform">
	<form id="userlist" method="get" action="userlist.php">
		<div class="infldset">
{foreach $result as $cur_group}
	{if $cur_group[g_id] == $show_group}
		<option value="{$cur_group[g_id]}" selected="selected">{$cur_group[g_title]}</option>
	 {else}
		<option value="{$cur_group[g_id]}">{$cur_group[g_title]}</option>
	{/if}
{/foreach}			</select>
			<p class="clearb">{$lang_ul['User search info']}</p>
		</div>
	</form>
</div>

Hlavní výhody tohoto převodu:

  1. Čistší syntaxe: Latte šablona je čitelnější a snáze udržovatelná.
  2. Automatické escapování: Latte automaticky escapuje výstup, čímž zvyšuje bezpečnost (např. htmlspecialchars() již není potřeba).
  3. Lepší struktura: Latte tagy ({foreach}, {if}) jasně oddělují logiku od prezentace.
  4. Zjednodušení: Odstraňuje nutnost explicitního výpisu pomocí echo.

Tento nástroj významně urychluje a zjednodušuje proces migrace z PHP na Latte, což vám umožní rychleji modernizovat vaše projekty a využít všech výhod, které Latte nabízí.