{"id":231554,"date":"2023-01-07T11:42:00","date_gmt":"2023-01-07T08:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231554"},"modified":"2023-01-07T11:43:52","modified_gmt":"2023-01-07T08:43:52","slug":"felsoekning-av-wordpress-med-ray-del-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/felsoekning-av-wordpress-med-ray-del-1\/","title":{"rendered":"Fels\u00f6kning av WordPress med Ray, del 1"},"content":{"rendered":"\n<p><strong>TL;DR:<\/strong> Det h\u00e4r inl\u00e4gget ger en \u00f6versikt p\u00e5 h\u00f6g niv\u00e5 \u00f6ver vilken typ av app <a href=\"https:\/\/myray.app\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ray<\/a> \u00e4r och hur man st\u00e4ller in den f\u00f6r anv\u00e4ndning i WordPress.<\/p>\n<hr \/>\n<p>S\u00e5 l\u00e4nge jag har varit involverad i WordPress-utveckling har jag konsekvent sett utvecklare \u2013 inklusive mig sj\u00e4lv \u2013 konsekvent anv\u00e4nda <code>[print_r](https:\/\/www.php.net\/manual\/en\/function.print-r.php)<\/code>och <code>[var_dump](https:\/\/www.php.net\/manual\/en\/function.var-dump.php)<\/code>n\u00e4rhelst de beh\u00f6ver se vad som h\u00e4nder i deras kod.<\/p>\n<p>Och det h\u00e4r \u00e4r okej f\u00f6r mindre datastrukturer som blickar p\u00e5 objekt, arrayer och s\u00e5 vidare. Sedan i andra \u00e4nden av fels\u00f6kningsspektrumet, om du beh\u00f6ver g\u00e5 igenom koden f\u00f6r att se vilka argument som skickas till en given funktion varifr\u00e5n och med vilket v\u00e4rde, d\u00e5 \u00e4r det oerh\u00f6rt anv\u00e4ndbart att anv\u00e4nda n\u00e5got som <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/installera-xdebug-del-1-xdebug-modulen\/\" title=\"Xdebug\">Xdebug<\/a>.<\/p>\n<p>Tills nyligen trodde jag inte att det fanns en medelv\u00e4g. Men s\u00e5 hittade jag Ray och jag har anv\u00e4nt den sedan dess.<\/p>\n<h2>Fels\u00f6kning av WordPress med Ray, del 1<\/h2>\n<h3>Vad \u00e4r Ray?<\/h3>\n<p>Innan vi pratar om att fels\u00f6ka WordPress med Ray \u00e4r det v\u00e4rt att f\u00f6rst\u00e5 vad Ray \u00e4r och vad det inte \u00e4r.<\/p>\n<p>Den f\u00f6rsta \u00e4r att det inte \u00e4r n\u00e5got som uteslutande \u00e4r WordPress, s\u00e5 om du har snubblat \u00f6ver det h\u00e4r inl\u00e4gget som n\u00e5gon annan i det bredare PHP-communityt \u00e4r det n\u00e5got som fortfarande fungerar att kolla in.<\/p>\n<p>Med det sagt, l\u00e5t oss anta att du \u00e4r en WordPress-baserad utvecklare och att du vill l\u00e4ra dig mer om vad Ray handlar om.<\/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=\"Fels\u00f6kning av WordPress med Ray, del 1\"><\/a><\/p>\n<p>F\u00f6r det f\u00f6rsta, \u00e4ven om det ger ett elegant exempel p\u00e5 hur din kod ser ut n\u00e4r den dumpas ut p\u00e5 en sk\u00e4rm, erbjuder den mycket mer.<\/p>\n<p>Observera att n\u00e4r du anv\u00e4nder Ray beh\u00f6ver du lite extra verktyg, som jag kommer att t\u00e4cka lite mer om ett \u00f6gonblick, men om du vill forts\u00e4tta att dumpa information till ett format med n\u00e5got som liknar <code>var_dump<\/code>, st\u00f6der Ray det. Det f\u00e5r det bara att se snyggare ut. \ud83d\ude42<\/p>\n<p>F\u00f6r det andra, n\u00e4r du anropar Ray fr\u00e5n din kod, kommer den att se till att du vet varifr\u00e5n samtalet kommer. P\u00e5 s\u00e5 s\u00e4tt vet du exakt vilken fil och vilken linje du tittar p\u00e5. Detta \u00e4r anv\u00e4ndbart s\u00e4rskilt n\u00e4r du har flera samtal.<\/p>\n<p>F\u00f6r det tredje kan du faktiskt pausa k\u00f6rningen av din kod ungef\u00e4r som du g\u00f6r n\u00e4r du anv\u00e4nder en faktisk debugger. Detta betyder att n\u00e4r den tr\u00e4ffar en viss punkt i din kod (och det \u00e4r anv\u00e4ndbart om du tr\u00e4ffar ett <code>switch<\/code>villkor eller ett <code>if<\/code>villkor eller om du anv\u00e4nder, s\u00e4g, en fabrik inom objektorienterad programmering och vill veta vilken instans av ett objekt har instansierats), d\u00e5 kan du stoppa utf\u00f6randet och f\u00e5 en b\u00e4ttre uppfattning om vad som h\u00e4nder med ditt projekt.<\/p>\n<p>Slutligen kan du organisera typerna av utdata i olika f\u00e4rger. Det betyder att om du tr\u00e4ffar en viss gren i koden och du inte vill tr\u00e4ffa den grenen kan du kategorisera den som r\u00f6d. P\u00e5 samma s\u00e4tt kan du g\u00f6ra samma sak med gr\u00f6nt, orange, lila och mer. Det beror verkligen p\u00e5 dig och vad du siktar p\u00e5 att uppn\u00e5 genom att titta p\u00e5 din data.<\/p>\n<h2>Anv\u00e4nda Ray i WordPres<\/h2>\n<p>Om du <a href=\"https:\/\/spatie.be\/docs\/ray\/v1\/installation-in-your-project\/wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4ser dokumenten<\/a> f\u00f6r att installera Ray i WordPress kan det verka lite skr\u00e4mmande (s\u00e4rskilt beroende p\u00e5 din erfarenhet av CLI, med Git och med plugins som m\u00e5ste anv\u00e4ndas).<\/p>\n<p>Det fina \u00e4r att det inte beh\u00f6ver vara s\u00e5 h\u00e4r. Ist\u00e4llet kan du ta WordPress Ray Plugin fr\u00e5n plugin-repo (antingen fr\u00e5n <a href=\"https:\/\/wordpress.org\/plugins\/spatie-ray\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">webbplatsen<\/a> eller inifr\u00e5n WordPress beroende p\u00e5 dina beh\u00f6righeter).<\/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=\"Fels\u00f6kning av WordPress med Ray, del 1\"><\/a><\/p>\n<p>N\u00e4r plugin-programmet har installerats b\u00f6r du omedelbart kunna b\u00f6rja dumpa information i Ray.<\/p>\n<h3>Anv\u00e4nder Git och Composer<\/h3>\n<p>Om du v\u00e4ljer att anv\u00e4nda Git och Composer, se till att dessa tv\u00e5 verktyg \u00e4r installerade p\u00e5 ditt system och g\u00f6r sedan f\u00f6ljande.<\/p>\n<p>Klona f\u00f6rst f\u00f6rvaret i din <code>mu-plugins<\/code>katalog genom att utf\u00e4rda f\u00f6ljande kommando:<\/p>\n<p>$<code>git clone git@github.com:spatie\/wordpress-ray<\/code><\/p>\n<p>Navigera sedan till den katalogen i din terminal och k\u00f6r:<\/p>\n<p><code>$ composer install<\/code><\/p>\n<p>N\u00e4r den processen \u00e4r klar, \u00f6ppna <code>wp-config.php<\/code>och l\u00e4gg till f\u00f6ljande tv\u00e5 rader:<\/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>D\u00e4refter kan du b\u00f6rja anv\u00e4nda <code>ray<\/code>funktionen i din kod. Till exempel har jag f\u00f6ljande kodrad som k\u00f6rs i en mall som jag anv\u00e4nder som en demo f\u00f6r den h\u00e4r artikeln:<\/p>\n<p><code>&lt;?php ray( wp_get_current_user() ); ?&gt;<\/code><\/p>\n<p>Sedan, n\u00e4r den h\u00e4r sidan laddas, kommer Ray-appen att visa f\u00f6ljande:<\/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=\"Fels\u00f6kning av WordPress med Ray, del 1\"><\/a><\/p>\n<p>Detta \u00e4r uppenbarligen rik information \u2013 information som fortfarande kan l\u00e4sas p\u00e5 andra s\u00e4tt \u2013 men p\u00e5 ett mycket mer elegant s\u00e4tt.<\/p>\n<h2>F\u00f6r del 2<\/h2>\n<p>I del 2 av serien kommer jag att t\u00e4cka hur man b\u00f6rjar fels\u00f6ka kod med Ray och varf\u00f6r jag tycker om att anv\u00e4nda appen som ett mellanting mellan n\u00e5got som <code>[var_dump](https:\/\/www.php.net\/manual\/es\/function.var-dump.php)<\/code>och <a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a>.<\/p>\n<p>Vidare kommer jag att g\u00e5 igenom n\u00e5gra av de WordPress-specifika funktionerna i Ray s\u00e5 att du kan se hur detta \u00e4r mer \u00e4n &quot;ett vackert s\u00e4tt att dumpa variabler.&quot;<\/p>\n<p>I slut\u00e4ndan tror jag att Xdebug fortfarande \u00e4r n\u00e5got som borde anv\u00e4ndas, men Ray \u00e4r en mycket trevligare mellanv\u00e4g som ger en hel del solid fels\u00f6kningsfunktionalitet utan att beh\u00f6va fullt st\u00f6d av en riktig debugger.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Det h\u00e4r \u00e4r en introduktion p\u00e5 h\u00f6g niv\u00e5 om hur man b\u00f6rjar fels\u00f6ka WordPress med Ray.<\/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":[838,848,901,755,807,787,724,868],"tags":[1173],"class_list":["post-231554","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-oeppen-kaella","category-php-9","category-programvara-med-oeppen-kaellkod","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=231554"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231554\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/158305"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}