{"id":234149,"date":"2022-12-08T09:55:00","date_gmt":"2022-12-08T06:55:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234149"},"modified":"2022-12-08T09:55:55","modified_gmt":"2022-12-08T06:55:55","slug":"viestien-kirjoittaminen-wordpress-virheenkorjauslokiin","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/viestien-kirjoittaminen-wordpress-virheenkorjauslokiin\/","title":{"rendered":"Viestien kirjoittaminen WordPress-virheenkorjauslokiin"},"content":{"rendered":"\n<p>Aina kun ty\u00f6skentelen projektin parissa, minulla on usein WordPress asetettu <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/natiivit-wordpress-virheenkorjaustyoekalut-jotka-eivaet-vaadi-ide-tae\/\" title=\"virheenkorjaustilaan\">virheenkorjaustilaan<\/a><\/strong> ja tykk\u00e4\u00e4n kirjoittaa virhelokiin viestej\u00e4, joita voin helposti tarkastella, j\u00e4ljitt\u00e4\u00e4 ja seurata aina, kun ty\u00f6skentelen projektin parissa.<\/p>\n<p>Kun teen t\u00e4m\u00e4n, on kaksi tapaa (ja se riippuu vain projektista):<\/p>\n<ul>\n<li>K\u00e4yt\u00e4n kirjastoa, kuten <strong><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monologia<\/a><\/strong> ,<\/li>\n<li>K\u00e4yt\u00e4n omaa, yksinkertaista lokitoimintoa.<\/li>\n<\/ul>\n<p>T\u00e4ss\u00e4 postauksessa k\u00e4sittelen j\u00e4lkimm\u00e4ist\u00e4. Toisin sanoen aion kertoa, kuinka kirjoitan viestej\u00e4 WordPress-virheenkorjauslokiin, ja sitten joitain asioita, joihin sinun on ehk\u00e4 kiinnitett\u00e4v\u00e4 huomiota aina, kun teet saman.<\/p>\n<h2>WordPressin virheenkorjausloki<\/h2>\n<p>Ensinn\u00e4kin on t\u00e4rke\u00e4\u00e4 huomata, ett\u00e4 funktio, jonka aion jakaa, on yleens\u00e4 perusluokan yhteydess\u00e4.<\/p>\n<p>Oletetaan, ett\u00e4 minulla on\u00a0 kaikilla tilaajillani <strong>AbstractSubscriber<\/strong> (kuten <strong>ScriptAssetSubscriber<\/strong> JavaScript-tiedoston rekister\u00f6inti\u00e4 ja jonoon lis\u00e4\u00e4mist\u00e4 varten).<\/p>\n<p><strong>AbstractSubscriber<\/strong> sis\u00e4lt\u00e4\u00e4 t\u00e4m\u00e4n toiminnon, jotta kaikki alaluokat voivat kutsua sit\u00e4. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/d8bed85851dad283183d84a819dd6c9a#file-00-log-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Toiminto on melko yksinkertainen:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Prints a message to the debug file that can easily be called by any subclass.\n *\n * @param mixed $message      an object, array, string, number, or other data to write to the debug log\n * @param bool  $shouldNotDie whether or not the The function should exit after writing to the log\n *\n *\/\nprotected function log($message, $shouldNotDie = true)\n{\n    error_log(print_r($message, true));\n    if ($shouldNotDie) {\n        exit;\n    }\n}<\/code><\/pre>\n<p>Mutta t\u00e4ss\u00e4 toiminnossa on useita asioita, jotka voivat rikkoa periaatetta tai aiheuttaa virheit\u00e4 koodinlaatuty\u00f6kaluissa.<\/p>\n<h3>Valinnaiset Boolen argumentit<\/h3>\n<p>Aina kun funktio hyv\u00e4ksyy valinnaisen loogisen argumentin, se voi tarkoittaa, ett\u00e4 funktiolla on useampi kuin yksi vastuu (t\u00e4ten <a href=\"https:\/\/en.wikipedia.org\/wiki\/Single_responsibility_principle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">yhden vastuun periaatteen vastainen<\/a> ).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73cdb388b5.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-162356-61e73cdb388b5.png\" alt=\"Viestien kirjoittaminen WordPress-virheenkorjauslokiin\"><\/a><\/p>\n<p>Syyn\u00e4 t\u00e4m\u00e4 rikkoisi mainittua periaatetta, koska se antaa moduulille enemm\u00e4n kuin yhden syyn muuttaa.<\/p>\n<p>Minusta on mukava antaa t\u00e4m\u00e4 kirjoittaa t\u00e4ll\u00e4 tavalla, koska k\u00e4yt\u00e4n sit\u00e4 virheenkorjaukseen, en tuotantoymp\u00e4rist\u00f6ihin, ja koska joskus saatan haluta pys\u00e4ytt\u00e4\u00e4 suorituksen, ja joskus en.<\/p>\n<p>Ja toki, voisin kirjoittaa kaksi erillist\u00e4 funktiota, mutta jos t\u00e4m\u00e4 on ainoa funktio, joka tekee t\u00e4m\u00e4n, en hyv\u00e4ksy sit\u00e4.<\/p>\n<h3>Kielletyt poistumisilmoitukset<\/h3>\n<p>Muut koodin laatuty\u00f6kalut eiv\u00e4t pid\u00e4 <strong>exit<\/strong> &#8211; lauseesta (ja vastaavasti he eiv\u00e4t pid\u00e4 <strong>die<\/strong> &#8211; lauseesta). Ja se on ymm\u00e4rrett\u00e4v\u00e4\u00e4: ne tyypillisesti pys\u00e4ytt\u00e4v\u00e4t ohjelman kokonaan, kun meid\u00e4n pit\u00e4isi tehd\u00e4 poikkeus, palauttaa arvo tai yleens\u00e4 tehd\u00e4 jotain k\u00e4sitell\u00e4ksesi tilanteen sulavasti.<\/p>\n<p>Kuitenkin, koska t\u00e4ss\u00e4 funktiossa on aikoja, jolloin haluan pys\u00e4ytt\u00e4\u00e4 suorituksen, voin hyvin k\u00e4sitell\u00e4 seurauksia, jotka johtuvat siit\u00e4, ett\u00e4 funktiossa on koodirivi.<\/p>\n<p>Vaihtoehtoisesti voisin k\u00e4ytt\u00e4\u00e4 <strong>wp_die():t\u00e4,<\/strong> ja useimmat koodinlaatuty\u00f6kalut eiv\u00e4t todenn\u00e4k\u00f6isesti tajuaisi sit\u00e4, mutta se peitt\u00e4\u00e4 p\u00e4\u00e4ongelman. Jos mit\u00e4\u00e4n, ehk\u00e4 on parasta vain vaimentaa varoitus mill\u00e4 tahansa ohjauksella, jonka valitsemasi nuuskija sallii.<\/p>\n<h2>Siit\u00e4 huolimatta, kirjaa viesti<\/h2>\n<p>Viime k\u00e4dess\u00e4 yll\u00e4 olevan toiminnon tarkoitus on tarjota yksinkertainen tapa kirjoittaa WordPress-virheenkorjauslokiin ja valinnaisesti pys\u00e4ytt\u00e4\u00e4 ohjelman suorittaminen.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73ce108d1e.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-162356-61e73ce108d1e.png\" alt=\"Viestien kirjoittaminen WordPress-virheenkorjauslokiin\"><\/a><\/p>\n<p>Se ei selv\u00e4stik\u00e4\u00e4n ole ongelmaton, ja laadukkaampia kirjastoja on saatavilla, mutta joskus et tarvitse vasaraa ongelman nastalle.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 on yksinkertainen toiminto WordPress-virheenkorjauslokiin kirjoittamista varten (joka ei ole ilman muutamia varoituksia). K\u00e4yt\u00e4n sit\u00e4 yleens\u00e4 paikallisessa koodissa, kun ty\u00f6skentelen abstraktien luokkien kanssa.<\/p>\n","protected":false},"author":1,"featured_media":235343,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[895,803,864],"tags":[1166],"class_list":["post-234149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koodi","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/234149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=234149"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/234149\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/235343"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=234149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=234149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=234149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}