{"id":230196,"date":"2022-12-04T09:36:00","date_gmt":"2022-12-04T06:36:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230196"},"modified":"2022-12-04T17:10:44","modified_gmt":"2022-12-04T14:10:44","slug":"wordpressi-vealogide-lugemine-ja-moistmine-2-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vealogide-lugemine-ja-moistmine-2-osa\/","title":{"rendered":"WordPressi vealogide lugemine ja m\u00f5istmine, 2. osa"},"content":{"rendered":"\n<p><strong><a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vealogide-lugemine-ja-moistmine-1-osa\/\" title=\"Eelmisel korral\">Eelmisel korral<\/a><\/strong> k\u00e4isime l\u00e4bi j\u00e4rgmise:<\/p>\n<ol>\n<li>silumiskonstantide seadistamine,<\/li>\n<li>vea logifaili leidmine,<\/li>\n<li>aru, kuidas logifaili lugeda,<\/li>\n<li>virna j\u00e4lgede m\u00f5istmine<\/li>\n<li>aru, kuidas virna lugeda<\/li>\n<\/ol>\n<p>Nii tore kui see ka pole, on siiski oluline m\u00f5ista, kuidas programmilisest aspektist andmeid vealogi kirjutada. See t\u00e4hendab; \u00dcks asi on see, kui teie t\u00f6\u00f6 tekitab vigu, hoiatusi v\u00f5i m\u00e4rkusi.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162973-61e747bcebed4.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-162973-61e747bcebed4.png\" alt=\"WordPressi vealogide lugemine ja m\u00f5istmine, 2. osa\"><\/a><\/p>\n<p>Teine asi on see, kui soovite m\u00f5ista, kuidas faili k\u00e4sitsi teavet kirjutada ja siluda.<\/p>\n<p>Selles postituses j\u00e4tkame t\u00e4pselt seda, et WordPressi vealogidest paremini aru saada.<\/p>\n<h2>WordPressi vealogide m\u00f5istmine, 2. osa<\/h2>\n<p>Mis m\u00f5te on ikkagi vealogi kirjutada? Kas see on isegi osa silumisprotsessist?<\/p>\n<p>Eelmisest <strong><a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vealogide-lugemine-ja-moistmine-1-osa\/\" title=\"postitusest\">postitusest<\/a><\/strong> :<\/p>\n<blockquote>\n<p>Aga kuidas on siis, kui tahame midagi v\u00e4lja j\u00e4tta, et saada \u00fclevaade sellest, mida WordPress v\u00f5i PHP n\u00e4eb? See on ka kasulik.<\/p>\n<\/blockquote>\n<p>Kui programmeerijad m\u00f5tlevad silumisele, m\u00f5tlevad paljud neist tegeliku siluri (st tarkvara osa) kasutamisele, katkestuspunktide seadmisele ja koodi l\u00e4bimisele, et j\u00e4lgida muutujate v\u00e4\u00e4rtust programmi k\u00e4ivitamisel.<\/p>\n<p>J\u00f5uame selleni, kuid enne seda vaatame, kuidas saame ise vealogi kirjutada, et anda meile \u00fclevaade meie t\u00f6\u00f6 toimimisest.<\/p>\n<p>L\u00f5ppude l\u00f5puks on \u00fcks asi, kui meie t\u00f6\u00f6 on hoiatuste, vigade ja m\u00e4rkuste loopimine. Teine asi on see, kui on teavet, mida tahame n\u00e4ha. Ja seal tuleb m\u00e4ngu vealogi kirjutamine.<\/p>\n<h3>PHP funktsioonide m\u00f5istmine<\/h3>\n<p>Vealogi kirjutamiseks on oluline m\u00f5ista kahte PHP funktsiooni:<\/p>\n<ol>\n<li><strong><a href=\"https:\/\/secure.php.net\/manual\/en\/function.error-log.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">error_log<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/secure.php.net\/manual\/en\/function.print-r.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">print_r<\/a><\/strong><\/li>\n<\/ol>\n<p>Mis puutub funktsiooni error_log, siis pange t\u00e4hele, et selle eesm\u00e4rk on:<\/p>\n<blockquote>\n<p>Saada t\u00f5rketeade m\u00e4\u00e4ratletud veak\u00e4sitlusrutiinidele<\/p>\n<\/blockquote>\n<p>Enamikul juhtudel on see seadistatud meie eest logifaili kirjutama WordPressi ja PHP vaikekonfiguratsiooni kaudu. Kuid siin on midagi enamat, sest me tahame sageli v\u00e4ljastada muutujate, massiivide, objektide jne v\u00e4\u00e4rtusi.<\/p>\n<p>Selleks peab olema v\u00f5imalik kasutada <strong>print_r<\/strong> koos faili <strong>error_log<\/strong>. <strong>print_r<\/strong> teeb j\u00e4rgmist:<\/p>\n<blockquote>\n<p>Prindib muutuja kohta inimloetava teabe<\/p>\n<\/blockquote>\n<p>Ja kui loete juhendit, m\u00e4rkate, et selleks on vaja kahte argumenti, millest teine \u200b\u200b\u200b\u200btuleb m\u00e4\u00e4rata <strong>t\u00f5eseks<\/strong>, kui soovite funktsiooni tulemuse logifaili printida.<\/p>\n<p>T\u00e4psemalt, nagu juhendis on kirjas:<\/p>\n<blockquote>\n<p>Kui soovite j\u00e4\u00e4dvustada <strong>print_r()<\/strong> v\u00e4ljundi, kasutage <code>return<\/code>parameetrit. Kui selle parameetri v\u00e4\u00e4rtuseks on m\u00e4\u00e4ratud <strong><code>TRUE<\/code><\/strong>, <strong>tagastab print_r()<\/strong> teabe, mitte ei prindi seda.<\/p>\n<\/blockquote>\n<p>Nii et \u00fcldine idee kirjutada massiivi v\u00e4\u00e4rtus, n\u00e4iteks $exampleArray, n\u00e4eks v\u00e4lja umbes <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-13-error-log-print-r-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\nerror_log(print_r($exampleArray, true));<\/code><\/pre>\n<p>Aga kuidas on lood WordPressi kontekstis?<\/p>\n<h3>V\u00e4\u00e4rtuste kirjutamine WordPressi t\u00f5rketeate logisse<\/h3>\n<p>Nii et \u00fclaltoodu kirjeldab meile vajalikke PHP-sse sisseehitatud funktsioone, kuid kuidas see WordPressi arendamise kontekstis v\u00e4lja n\u00e4eb.<\/p>\n<p>Selleks oletame, et oleme juurutanud <strong><a href=\"https:\/\/wordpress.mediadoma.com\/et\/registri-mustri-kasutamine-wordpressis\/\" title=\"registri mustri\">registri mustri<\/a><\/strong> versiooni. Mustri rakendamisel on meil ka meetod nimega <strong>start<\/strong>, mida saame kutsuda, kui k\u00f5ik meie objektid on registrisse lisatud.<\/p>\n<p>See v\u00f5ib v\u00e4lja n\u00e4ha umbes <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-14-start-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Starts all of the objects stored is the registry by calling\n * the `start` method that's available on each of the objects.\n *\/\npublic function start()\n{\n    foreach ($this-&gt;storage as $obj) {\n        $obj-&gt;start();\n    }\n}<\/code><\/pre>\n<p>N\u00fc\u00fcd, mis puudutab rakendamist, on see lihtne. Aga mis siis, kui tahame n\u00e4ha, milliseid objekte ts\u00fckli iga iteratsiooni kaudu kutsutakse.<\/p>\n<p>Selle idee seisneb selles, et suudame salvestatud objektide kaudu itereerida ja nimetada iga\u00fche jaoks meetodi. See p\u00f5hineb ideel, et igal objektil on iga\u00fche jaoks saadaval meetod (mida saab j\u00f5ustada <strong><a href=\"https:\/\/wordpress.mediadoma.com\/et\/objektorienteeritud-programmeerimine-liideste-moistmine\/\" title=\"liidesega\">liidesega<\/a><\/strong> ).<\/p>\n<p>Esiteks t\u00f5statab see k\u00fcsimuse: miks me v\u00f5ime seda teha? WordPressi s\u00fcndmustehalduss\u00fcsteemi olemuse t\u00f5ttu tahame v\u00f5ib-olla tagada, et iga objekt, mille k\u00e4ivitamist ootame, k\u00e4ivituks.<\/p>\n<p>Teiseks, kuidas saame n\u00e4ha, milliseid objekte kutsutakse? Siin tulebki m\u00e4ngu vealogi kirjutamine. Kasutades \u00fclalkirjeldatud meetodeid, on \u00fcks viis seda teha <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-15-view-stored-objects-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmiselt<\/a><\/strong>.<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Starts all of the objects stored is the registry by calling\n * the `start` method that's available on each of the objects.\n *\/\npublic function start()\n{\n    foreach ($this-&gt;storage as $obj) {\n        error_log(print_r($obj, true));\n        $obj-&gt;start();\n    }\n}<\/code><\/pre>\n<p>Selle tulemuseks on j\u00e4rgmine v\u00e4ljund:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162973-61e747c0a5923.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-162973-61e747c0a5923.png\" alt=\"WordPressi vealogide lugemine ja m\u00f5istmine, 2. osa\"><\/a><\/p>\n<p>Siin n\u00e4ete objekti; see on nimeruum, see on atribuudi v\u00e4\u00e4rtused (sh kas atribuudid on privaatsed, kaitstud, avalikud jne).<\/p>\n<p>Sealt saate seej\u00e4rel natuke silumist teha, kui v\u00e4ljund on see, mida te ei oodanud, v\u00f5i v\u00f5ite selle abil kontrollida, kas teie kood teeb seda, mida ootate.<\/p>\n<p>See on siiski vaid \u00fcks n\u00e4ide. Siiski v\u00f5ite muutuja <strong>$storage<\/strong> v\u00e4\u00e4rtused enne ts\u00fckli itereerimist v\u00e4lja j\u00e4tta. See valik s\u00f5ltub t\u00f5esti sinust ja sellest, mida soovid saavutada.<\/p>\n<h2>Installitud pistikprogrammide kasutamine<\/h2>\n<p>Siinkohal oleme k\u00e4sitlenud koodi silumise p\u00f5hiaspekte vealogide kasutamise kaudu.<\/p>\n<p>N\u00fc\u00fcd aga peame p\u00f6\u00f6rama t\u00e4helepanu pistikprogrammidele, millest paar postitust tagasi r\u00e4\u00e4giti. P\u00e4rast seda t\u00f6\u00f6tame l\u00f5puks Xdebugi poole.<\/p>\n<p>J\u00e4rgmisena vaatame aga WordPressis endas meile saadaolevaid t\u00f6\u00f6riistu.<\/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>Teine asi on see, kui soovite m\u00f5ista, kuidas uurimise ja silumise eesm\u00e4rgil faili k\u00e4sitsi teavet kirjutada. Selles postituses j\u00e4tkame t\u00e4pselt seda, et WordPressi vealogidest paremini aru saada.<\/p>\n","protected":false},"author":1,"featured_media":162974,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,842],"tags":[1165],"class_list":["post-230196","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=230196"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230196\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/162974"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}