Jak nastavit XDebug pro PhpStorm

Zejména v případě používání framework se při psaná nejen webů hodí mít možnost si do kódu přidat „breakpointy“ (místa na kterých se aplikace po spuštění zastaví) a z těchto míst se poté dívat kam kód dál směřuje a jaké hodnoty mají jednotlivé proměnné.

U webových aplikací je to všechno trošku složitější, jelikož potřebujeme nastavit pro podporu debugování taky samotný webové server a tak přináším návod pro kombinaci PHP jakožto modulu Apache serveru a vývojového prostředí PHPStorm.

Budu předpokládat že máte již vyřešeno následující:

  • nainstalován webový server Apache včetně PHP, které bude obsahovat rozšíření pro XDebug
  • nainstalováno IDE PHPStorm
  • používáte prohlížeč Safari – debugování bude ale samozřejmě fungovat i v ostatních prohlížečích, jen se musíte postarat o jiný plugin pro zapnutí Debug módu

Povolení a nastavení modulu XDebug pro PHP

Prvním krokem je zapnutí podpory XDebug v PHP. Já používám balík NAMP, který obsahuje Apache, MySQL a PHP a XDebug je nutné zapnout ručně pomocí úpravy konfiguračního souboru PHP, tedy php.ini. Je ale možné, že budete moci XDebug zapnout mnohem elegantněji, nicméně postup, přes konfigurační soubor je nejuniverzálnější.

Nezapomeňte si ověřit, že editujete správný php.ini a v něm proveďte následující změny:

[xdebug]
zend_extension="/Applications/MAMP/bin/php/php5.6.7/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"
xdebug.remote_enable=true
xdebug.remote_port=9000
xdebug.idekey="XDEBUG_ECLIPSE"

Poté už stačí jen webový server restartovat a nahrání XDebug modulu si můžete ověřit například pomocí:

<?php
phpInfo();
?>

Ve výpisu byste hned na začátku měli najít nějaký podobný výpis, který obsahuje zapnutý XDebug.
Screenshot 2015-06-13 23.36.56

Tím jsme dokončili serverovou část a můžeme se podívat na nastavení samotného IDE.

Nastavení debugování v PhpStorm

Otevřeme si menu PHPStormu a v něm Run -> Edit Configuration a pomocí ikonky + přidáme novou položku „PHP Remote Debug“, kterou si nějak pojmenujeme, např. „XDebug“. Dále budeme muset nastavit server a tzv. IDE key – ten musíme mít pak stejný jak v PHPStormu tak v samotném prohlížeči a na webovém serveru. Jednotlivé nastavení máte na obrázcích níže.

Screenshot 2015-06-13 23.38.35 Screenshot 2015-06-13 23.38.23

Před samotným debugováním nezapoměňte ještě zapnout listener, který bude poslouchat PHP Debug spojení – najdete v menu Run -> Start Listening for PHP Debug Connection.

Plugin do Safari – XDebug Helper

Poslední částí je pak zapnutí debugování v prohlížeči. Já používám Safari a tak se mi nejvíce hodí plugin XDebug Helper, který má velice jednoduché menu. Pomocí volby Debug pak debugovací mód nastartujete a naopak pomocí Disable vypnete.

Screenshot 2015-06-13 23.40.11

 

A to je vše 🙂

PHP – náhodné setřízení pole se zachováním klíčů (indexů)

Občas člověk potřebuje setřidit pole s klíči. V samotném PHP máme pro setřízení dvě funkce, avšak jedna chybí a může se občas hodit. Jak tedy setřídit náhodně pole se zachováním klíčů?

V současné verzi PHP (5.x) máme k dispozici funkci asort – třídí pole se zachováním klíčů vzestupně (ASCentně) a arsort – třídí pole se zachováním klíčů sestupně (DESCentně).

Co však dělat, pokud chceme asociativní pole zamíchat a klíče zachovat? Pomůže si funkcí shuffle, která umí zamíchat klasické pole a kterou aplikujeme nad nově vytvořeným polem klíčů, které nakonec použijeme pro nové setřízení prvků pole. Zřejmé je to z následujícího kódu:

        $keys = array_keys($files);
        shuffle($keys);
	foreach ($keys as $key) { 
          $files_rand[$key] = $files[$key]; 
        }
	$files = $files_rand;

Uvedené řešení nemusí být jiště jediné, ale je vcelku triviální na pochopení a spolehlivě funguje.