{"id":229947,"date":"2022-11-14T12:47:00","date_gmt":"2022-11-14T09:47:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229947"},"modified":"2022-11-14T12:49:02","modified_gmt":"2022-11-14T09:49:02","slug":"miksi-vaivautua-automaattiseen-lataukseen-wordpressissae-osa-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/miksi-vaivautua-automaattiseen-lataukseen-wordpressissae-osa-1\/","title":{"rendered":"Miksi vaivautua automaattiseen lataukseen WordPressiss\u00e4, osa 1"},"content":{"rendered":"\n<p>Yksi helpoimmista asioista, jonka voimme tehd\u00e4 ty\u00f6skennelless\u00e4mme WordPress-laajennusten parissa, on hyl\u00e4t\u00e4 <strong>request_once-<\/strong> tai <strong>include_once-<\/strong> lausekkeet koko koodiimme.<\/p>\n<p>Ja miksi ei? Se on helppo tapa tuoda kaikki tarvittavat tiedostot tai riippuvuudet tietylle luokalle, saada se helposti luettavaksi, eik\u00e4 sinun tarvitse huolehtia valtavien kooditiedostojen luomisesta. T\u00e4m\u00e4 tarkoittaa, ett\u00e4 se auttaa meit\u00e4 yksinkertaistamaan kirjoittamaamme, jotta voimme saada luokkamme [useimmiten tai mieluiten] tekem\u00e4\u00e4n sen, mit\u00e4 he tekev\u00e4t hyvin.<\/p>\n<p>Jos olet kuitenkin lukenut t\u00e4t\u00e4 sivustoa viimeisen vuoden ajan, tied\u00e4t, ett\u00e4 olen automaattilatauksen fani, ja mielest\u00e4ni jokaisen PHP:n kanssa ty\u00f6skentelev\u00e4n pit\u00e4isi \u2013 riippumatta siit\u00e4, k\u00e4yt\u00e4tk\u00f6 WordPressi\u00e4 vai jotakin muuta alustaa. k\u00e4ytt\u00e4\u00e4.<\/p>\n<p>Mutta se her\u00e4tt\u00e4\u00e4 kaksi kysymyst\u00e4, varsinkin jos olet vasta aloittamassa:<\/p>\n<ol>\n<li>Miksi vaivautua automaattiseen lataamiseen, kun on muita tapoja k\u00e4sitell\u00e4 latausriippuvuuksia?<\/li>\n<li>Miten automaattinen lataus vastaa k\u00e4\u00e4nnettyj\u00e4 kieli\u00e4?<\/li>\n<\/ol>\n<p>Joten ajattelin, ett\u00e4 t\u00e4h\u00e4n kannattaa vastata parissa seuraavassa postauksessa.<\/p>\n<h2>Miksi vaivautua automaattiseen lataamiseen?<\/h2>\n<p>Lyhyesti on t\u00e4m\u00e4:<\/p>\n<ol>\n<li><strong>request_once<\/strong> ja <strong>include_once<\/strong> voivat johtaa koodiin, jota on vaikea korjata,<\/li>\n<li>koodia on vaikea j\u00e4ljitt\u00e4\u00e4.<\/li>\n<\/ol>\n<p>Mutta kuinka niin?<\/p>\n<h3>1 Vianetsint\u00e4 on vaikeaa<\/h3>\n<p>Koodia kirjoitettaessa jos jokin on varmaa, se on, ett\u00e4 jokin ei toimi toivotulla tavalla. Se kuuluu toimintaamme, eik\u00f6 niin?<\/p>\n<p>Joten mit\u00e4 tulee virheenkorjauskoodiin, meill\u00e4 kaikilla on strategiamme.<\/p>\n<ul>\n<li>jotkut meist\u00e4 valitsevat <strong>echo-<\/strong> tai <strong>var_dump<\/strong> -koodin j\u00e4ljitt\u00e4miseen,<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/debug-bar-console\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">k\u00e4yt\u00e4<\/a> WordPressin laajennusta,<\/li>\n<li>toiset k\u00e4ytt\u00e4v\u00e4t debuggeria.<\/li>\n<\/ul>\n<p>Vaikka t\u00e4m\u00e4 viesti ei k\u00e4sittele virheenkorjausta, meid\u00e4n on teht\u00e4v\u00e4 virheenkorjaus. Joten jos tied\u00e4mme, ett\u00e4 meid\u00e4n on teht\u00e4v\u00e4 se, eik\u00f6 meid\u00e4n pit\u00e4isi tehd\u00e4 siit\u00e4 mahdollisimman helppoa itsellemme?<\/p>\n<p>PHP on dynaamisesti kirjoitettu kieli, joten meill\u00e4 on yleens\u00e4 paljon asioita, joista huolehditaan aina kun kirjoitamme koodia. Toisin sanoen tietyt asiat p\u00e4\u00e4tell\u00e4\u00e4n tai pakotetaan aina, kun koodia ajetaan.<\/p>\n<p>Oletetaan esimerkiksi, ett\u00e4 ty\u00f6skentelet merkkijonon kanssa ja vertaat sit\u00e4 numeroon. Tulkki tekee kaikkensa arvatakseen, mit\u00e4 olet tekem\u00e4ss\u00e4 (haluatko j\u00e4sent\u00e4\u00e4 merkkijonon kokonaisluvuksi vai p\u00e4invastoin?) ja sitten ty\u00f6st\u00e4\u00e4 sit\u00e4.<\/p>\n<p>Pelk\u00e4st\u00e4\u00e4n muuttujien kanssa ty\u00f6skentely voi olla tarkkuuden harjoittelua, koska haluamme koodimme lukevan haluamallamme tavalla. Miksi j\u00e4tt\u00e4\u00e4 tulkin teht\u00e4v\u00e4ksi arvata, mit\u00e4 tarkoitamme? Ja jos tulkin on teht\u00e4v\u00e4 ylim\u00e4\u00e4r\u00e4ist\u00e4 ty\u00f6t\u00e4, ihmiset varmasti tekev\u00e4t.<\/p>\n<p>T\u00e4t\u00e4 varten, jos tied\u00e4mme, ett\u00e4 bugeja tuodaan, ja tied\u00e4mme, ett\u00e4 on olemassa tapoja kirjoittaa puhtaampaa koodia, miksi emme tekisi sit\u00e4?<\/p>\n<h3>2 J\u00e4ljitys on vaikeaa (tai ehk\u00e4 vaikeampaa?)<\/h3>\n<p>Mutta t\u00e4m\u00e4 ei silti anna syyt\u00e4 sille, miksi meid\u00e4n pit\u00e4isi luottaa johonkin, kuten automaattiseen latausohjelmaan, verrattuna kielen sis\u00e4\u00e4nrakennettuihin palveluihin, eik\u00f6 niin?<\/p>\n<p>Harkitse t\u00e4t\u00e4: Oletetaan, ett\u00e4 etsit tiedostoa, joka yritt\u00e4\u00e4 l\u00f6yt\u00e4\u00e4 virheen ja t\u00f6rm\u00e4\u00e4t funktioon, jossa on jokin koodi, joka k\u00e4ytt\u00e4\u00e4 <strong>include_once -koodia<\/strong> ja sitten jotain muuta koodia.<\/p>\n<p>T\u00e4m\u00e4 tarkoittaa, ett\u00e4 sinun t\u00e4ytyy lukea koodi, pit\u00e4\u00e4 t\u00e4m\u00e4 henkisesti arkistoituna, hyp\u00e4t\u00e4 toiseen tiedostoon, ymm\u00e4rt\u00e4\u00e4 t\u00e4m\u00e4 koodi ja palata sitten alkuper\u00e4iseen tiedostoon. Ja t\u00e4m\u00e4 olettaa, ett\u00e4 toinen tiedosto ei my\u00f6sk\u00e4\u00e4n <strong>sis\u00e4ll\u00e4<\/strong> tai <strong>vaadi<\/strong> muita tiedostoja.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165694-61e786c8874b7.jpg\" 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-165694-61e786c8874b7.jpg\" alt=\"Miksi vaivautua automaattiseen lataukseen WordPressiss\u00e4, osa 1\"><\/a><\/p>\n<p>Sit\u00e4 kutsutaan syyst\u00e4 spagettikoodiksi.<\/p>\n<p>N\u00e4in ollen voit n\u00e4hd\u00e4 t\u00e4m\u00e4n aiheuttaman ahdingon, kun p\u00e4\u00e4t\u00e4t sis\u00e4llytt\u00e4\u00e4 t\u00e4m\u00e4n koodin koko ohjelmaan. Lyhyesti sanottuna, olet sis\u00e4llytt\u00e4nyt riippuvuuksiin, mik\u00e4 vaikeuttaa luonnostaan \u200b\u200b\u200b\u200bseuraamista, miss\u00e4 jokin saattaa olla vialla.<\/p>\n<p>T\u00e4m\u00e4 ei tarkoita, ett\u00e4 automaattinen lataus korjaa t\u00e4m\u00e4n automaattisesti, mutta se tarkoittaa, ett\u00e4 sen ei tarvitse olla n\u00e4in. Sen sijaan voit kirjoittaa koodia, joka instantoi luokkia, kutsuu menetelmi\u00e4 ja suorittaa sitten koodin ilman, ett\u00e4 sinun tarvitsee sis\u00e4llytt\u00e4\u00e4 mit\u00e4\u00e4n manuaalisesti.<\/p>\n<h3>Luettavampi, j\u00e4ljitett\u00e4v\u00e4 koodi<\/h3>\n<p>N\u00e4in tehdess\u00e4ni huomaan, ett\u00e4 se pakottaa meid\u00e4t kirjoittamaan puhtaampaa koodia, luultavasti paremmin yll\u00e4pidett\u00e4v\u00e4\u00e4 koodia. Se helpottaa my\u00f6s koodin kirjoittamista, jonka j\u00e4ljitys on helpompaa, ja sit\u00e4 on helpompi hy\u00f6dynt\u00e4\u00e4 debuggerilla.<\/p>\n<p>Toisin sanoen voimme asettaa keskeytyspisteit\u00e4 tiettyihin kohtiin koodissamme, saada debuggerin automaattisesti viem\u00e4\u00e4n meid\u00e4t kutsuttavaan luokkaan ja astua takaisin toimintoon, joka kutsui sit\u00e4.<\/p>\n<p>T\u00e4m\u00e4 ei tarkoita, etteik\u00f6 sit\u00e4 voisi tehd\u00e4 mill\u00e4\u00e4n muulla tavalla, mutta hy\u00f6dyt ovat paljon suuremmat kuin vaihtoehdot. Ja tietysti t\u00e4m\u00e4 j\u00e4tt\u00e4\u00e4 edelleen kysymyksen siit\u00e4, miksi automaattista latausta (tai kolmannen osapuolen tiedostojen sis\u00e4llytt\u00e4mist\u00e4) ylip\u00e4\u00e4t\u00e4\u00e4n tarvitaan.<\/p>\n<p>Mutta sit\u00e4 k\u00e4sitell\u00e4\u00e4n sarjan toisessa osassa.<\/p>\n<h2>Muuta lukemista<\/h2>\n<p>Viestini <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nimitilat-ja-automaattinen-lataus-wordpressissae\/\" title=\"nimitiloista ja automaattisesta latauksesta WordPressiss\u00e4\">nimitiloista ja automaattisesta latauksesta WordPressiss\u00e4<\/a> sek\u00e4 WordPressin <a href=\"https:\/\/github.com\/tommcfarlin\/simple-autoloader-for-wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Simple Autoloader -sovelluksesta<\/a> ovat kaksi muuta resurssia, jotka liittyv\u00e4t selv\u00e4sti t\u00e4h\u00e4n viestiin. Joten jos sinulla on aikaa, tarkista ne (ja \u00e4l\u00e4 ep\u00e4r\u00f6i avata ongelmaa tai vetopyynt\u00f6\u00e4 yksinkertaisessa automaattilatausprojektissa).<\/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>Olen puhunut ja kirjoittanut WordPressin automaattisesta latauksesta aiemminkin, mutta mielest\u00e4ni automaattilatauksen edut auttavat edelleen kirjoittamaan organisoitua, j\u00e4ljitett\u00e4v\u00e4\u00e4 koodia.<\/p>\n","protected":false},"author":1,"featured_media":165695,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,843],"tags":[1166],"class_list":["post-229947","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229947","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=229947"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229947\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/165695"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}