{"id":231461,"date":"2023-01-07T11:13:00","date_gmt":"2023-01-07T08:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231461"},"modified":"2023-01-07T11:15:48","modified_gmt":"2023-01-07T08:15:48","slug":"debugowanie-wordpressa-za-pomoca-raya-czesc-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/debugowanie-wordpressa-za-pomoca-raya-czesc-1\/","title":{"rendered":"Debugowanie WordPressa za pomoc\u0105 Raya, cz\u0119\u015b\u0107 1"},"content":{"rendered":"\n<p><strong>TL; DR:<\/strong> Ten post zawiera og\u00f3lny przegl\u0105d tego, czym jest aplikacja <a href=\"https:\/\/myray.app\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ray<\/a> i jak skonfigurowa\u0107 j\u0105 do u\u017cytku w WordPress.<\/p>\n<hr \/>\n<p>Odk\u0105d zajmuj\u0119 si\u0119 tworzeniem WordPressa, stale widzia\u0142em, jak programi\u015bci \u2013 w tym ja \u2013 konsekwentnie u\u017cywaj\u0105 <code>[print_r](https:\/\/www.php.net\/manual\/en\/function.print-r.php)<\/code>i <code>[var_dump](https:\/\/www.php.net\/manual\/en\/function.var-dump.php)<\/code>zawsze, gdy musz\u0105 zobaczy\u0107, co dzieje si\u0119 w ich kodzie.<\/p>\n<p>Jest to w porz\u0105dku w przypadku mniejszych struktur danych, takich jak przegl\u0105danie obiekt\u00f3w, tablic i tak dalej. Po drugiej stronie spektrum debugowania, je\u015bli musisz przej\u015b\u0107 przez kod, aby zobaczy\u0107, jakie argumenty s\u0105 przekazywane do danej funkcji, sk\u0105d iz jak\u0105 warto\u015bci\u0105, u\u017cycie czego\u015b takiego jak <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/instalowanie-xdebug-czesc-1-modul-xdebug\/\" title=\"Xdebug\">Xdebug<\/a> jest niezwykle pomocne.<\/p>\n<p>Do niedawna nie s\u0105dzi\u0142em, \u017ce istnieje kompromis. Ale potem znalaz\u0142em Raya i od tamtej pory go u\u017cywam.<\/p>\n<h2>Debugowanie WordPressa za pomoc\u0105 Raya, cz\u0119\u015b\u0107 1<\/h2>\n<h3>Co to jest Ray?<\/h3>\n<p>Zanim zaczniemy m\u00f3wi\u0107 o debugowaniu WordPressa za pomoc\u0105 Raya, warto zrozumie\u0107, czym jest Ray, a czym nie jest.<\/p>\n<p>Po pierwsze, nie jest to co\u015b, co jest wy\u0142\u0105cznie WordPressem, wi\u0119c je\u015bli natkn\u0105\u0142e\u015b si\u0119 na ten post jako kto\u015b inny w szerszej spo\u0142eczno\u015bci PHP, jest to co\u015b, co nadal dzia\u0142a.<\/p>\n<p>Powiedziawszy to, za\u0142\u00f3\u017cmy, \u017ce jeste\u015b programist\u0105 opartym na WordPressie i chcesz dowiedzie\u0107 si\u0119 wi\u0119cej o tym, czym jest Ray.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dbfceb3ea.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dbfceb3ea.png\" alt=\"Debugowanie WordPressa za pomoc\u0105 Raya, cz\u0119\u015b\u0107 1\"><\/a><\/p>\n<p>Po pierwsze, chocia\u017c zapewnia elegancki przyk\u0142ad tego, jak wygl\u0105da Tw\u00f3j kod po zrzuceniu na ekran, oferuje znacznie wi\u0119cej.<\/p>\n<p>Pami\u0119taj, \u017ce gdy u\u017cywasz Raya, b\u0119dziesz potrzebowa\u0107 dodatkowych narz\u0119dzi, kt\u00f3re za chwil\u0119 om\u00f3wi\u0119 wi\u0119cej, ale je\u015bli chcesz kontynuowa\u0107 zrzucanie informacji do formatu przy u\u017cyciu czego\u015b podobnego do <code>var_dump<\/code>, Ray to obs\u0142uguje. To tylko sprawia, \u017ce \u200b\u200bwygl\u0105da \u0142adniej.<\/p>\n<p>Po drugie, gdy wywo\u0142asz Raya z poziomu kodu, upewnisz si\u0119, \u017ce wiesz, sk\u0105d pochodzi wywo\u0142anie. W ten spos\u00f3b wiesz dok\u0142adnie, jaki plik i na jak\u0105 lini\u0119 patrzysz. Jest to przydatne zw\u0142aszcza w przypadku wielu po\u0142\u0105cze\u0144.<\/p>\n<p>Po trzecie, mo\u017cesz faktycznie wstrzyma\u0107 wykonywanie kodu, podobnie jak robisz to za ka\u017cdym razem, gdy u\u017cywasz rzeczywistego debugera. Oznacza to, \u017ce gdy trafi w okre\u015blony punkt w kodzie (i jest to przydatne, je\u015bli trafiasz na <code>switch<\/code>warunek lub <code>if<\/code>warunek lub je\u015bli u\u017cywasz, powiedzmy, fabryki w programowaniu obiektowym i chcesz wiedzie\u0107, kt\u00f3re wyst\u0105pienie obiekt zosta\u0142 utworzony), mo\u017cesz zatrzyma\u0107 wykonywanie i lepiej zrozumie\u0107, co si\u0119 dzieje z Twoim projektem.<\/p>\n<p>Na koniec mo\u017cesz uporz\u0105dkowa\u0107 typy danych wyj\u015bciowych w r\u00f3\u017cne kolory. Oznacza to, \u017ce je\u015bli trafisz w konkretn\u0105 ga\u0142\u0105\u017a w kodzie i nie chcesz trafi\u0107 w t\u0119 ga\u0142\u0105\u017a, mo\u017cesz zaklasyfikowa\u0107 j\u0105 jako czerwon\u0105. Podobnie mo\u017cesz zrobi\u0107 to samo z zielonym, pomara\u0144czowym, fioletowym i innymi. To naprawd\u0119 zale\u017cy od Ciebie i tego, co chcesz osi\u0105gn\u0105\u0107, patrz\u0105c na swoje dane.<\/p>\n<h2>Korzystanie z Raya w WordPres<\/h2>\n<p>Je\u015bli <a href=\"https:\/\/spatie.be\/docs\/ray\/v1\/installation-in-your-project\/wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">czytasz dokumentacj\u0119<\/a> dotycz\u0105c\u0105 instalacji Raya w WordPressie, mo\u017ce to wydawa\u0107 si\u0119 troch\u0119 onie\u015bmielaj\u0105ce (szczeg\u00f3lnie w zale\u017cno\u015bci od twojego do\u015bwiadczenia z CLI, z Git i obowi\u0105zkowymi wtyczkami).<\/p>\n<p>Fajne jest to, \u017ce nie musi tak by\u0107. Zamiast tego mo\u017cesz pobra\u0107 wtyczk\u0119 WordPress Ray z repozytorium wtyczek (ze <a href=\"https:\/\/wordpress.org\/plugins\/spatie-ray\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">strony<\/a> lub z poziomu WordPressa, w zale\u017cno\u015bci od twoich uprawnie\u0144).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc022fcee.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc022fcee.png\" alt=\"Debugowanie WordPressa za pomoc\u0105 Raya, cz\u0119\u015b\u0107 1\"><\/a><\/p>\n<p>Po zainstalowaniu wtyczki powiniene\u015b by\u0107 w stanie natychmiast zacz\u0105\u0107 zrzuca\u0107 informacje do Raya.<\/p>\n<h3>Korzystanie z Gita i Composera<\/h3>\n<p>Je\u015bli zdecydujesz si\u0119 u\u017cywa\u0107 Git i Composer, upewnij si\u0119, \u017ce te dwa narz\u0119dzia s\u0105 zainstalowane w Twoim systemie, a nast\u0119pnie wykonaj nast\u0119puj\u0105ce czynno\u015bci.<\/p>\n<p>Najpierw sklonuj repozytorium do swojego <code>mu-plugins<\/code>katalogu, wydaj\u0105c nast\u0119puj\u0105ce polecenie:<\/p>\n<p>$<code>git clone git@github.com:spatie\/wordpress-ray<\/code><\/p>\n<p>Nast\u0119pnie przejd\u017a do tego katalogu w swoim terminalu i uruchom:<\/p>\n<p><code>$ composer install<\/code><\/p>\n<p>Po zako\u0144czeniu tego procesu otw\u00f3rz <code>wp-config.php<\/code>i dodaj nast\u0119puj\u0105ce dwa wiersze:<\/p>\n<p><code>require_once ABSPATH. 'wp-content\/mu-plugins\/wordpress-ray\/wp-ray.php';<\/code><\/p>\n<p><code>define( 'WP_ENVIRONMENT_TYPE', 'local' );<\/code><\/p>\n<p>Nast\u0119pnie mo\u017cesz zacz\u0105\u0107 u\u017cywa\u0107 <code>ray<\/code>funkcji w swoim kodzie. Na przyk\u0142ad mam nast\u0119puj\u0105cy wiersz kodu uruchomiony w szablonie, kt\u00f3rego u\u017cywam jako demonstracji tego artyku\u0142u:<\/p>\n<p><code>&lt;?php ray( wp_get_current_user() ); ?&gt;<\/code><\/p>\n<p>Nast\u0119pnie, za ka\u017cdym razem, gdy ta strona zostanie za\u0142adowana, aplikacja Ray wy\u015bwietli nast\u0119puj\u0105ce informacje:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc060b535.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc060b535.png\" alt=\"Debugowanie WordPressa za pomoc\u0105 Raya, cz\u0119\u015b\u0107 1\"><\/a><\/p>\n<p>To oczywi\u015bcie bogata informacja \u2013 informacja, kt\u00f3r\u0105 mo\u017cna jeszcze odczyta\u0107 innymi sposobami \u2013 ale w znacznie bardziej eleganckim stylu.<\/p>\n<h2>Cz\u0119\u015b\u0107 2<\/h2>\n<p>W cz\u0119\u015bci 2 serii om\u00f3wi\u0119, jak rozpocz\u0105\u0107 debugowanie kodu za pomoc\u0105 Raya i dlaczego lubi\u0119 u\u017cywa\u0107 aplikacji jako \u015brodka mi\u0119dzy czym\u015b podobnym <code>[var_dump](https:\/\/www.php.net\/manual\/es\/function.var-dump.php)<\/code>a <a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a>.<\/p>\n<p>Ponadto om\u00f3wi\u0119 niekt\u00f3re funkcje Raya specyficzne dla WordPressa, aby\u015b m\u00f3g\u0142 zobaczy\u0107, \u017ce jest to co\u015b wi\u0119cej ni\u017c \u201e\u0142adny spos\u00f3b na zrzucenie zmiennych&quot;.<\/p>\n<p>Ostatecznie uwa\u017cam, \u017ce Xdebug jest nadal czym\u015b, co powinno by\u0107 u\u017cywane, ale Ray jest znacznie lepszym \u015brodkiem, kt\u00f3ry zapewnia wiele solidnych funkcji debugowania bez potrzeby pe\u0142nego wsparcia prawdziwego debuggera.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To jest wprowadzenie na wysokim poziomie, jak rozpocz\u0105\u0107 debugowanie WordPressa za pomoc\u0105 Raya.<\/p>\n","protected":false},"author":1,"featured_media":158305,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,784,752,805,836,845,866],"tags":[1169],"class_list":["post-231461","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-oprogramowanie-open-source","category-otwarte-zrodlo","category-php-7","category-przewodnik-dla-poczatkujacych","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=231461"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231461\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/158305"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=231461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=231461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=231461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}