{"id":229955,"date":"2022-11-14T14:11:00","date_gmt":"2022-11-14T11:11:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229955"},"modified":"2022-11-14T14:13:53","modified_gmt":"2022-11-14T11:13:53","slug":"miksi-vaivautua-automaattiseen-lataukseen-wordpressissae-osa-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/miksi-vaivautua-automaattiseen-lataukseen-wordpressissae-osa-2\/","title":{"rendered":"Miksi vaivautua automaattiseen lataukseen WordPressiss\u00e4, osa 2"},"content":{"rendered":"\n<p>Edellisess\u00e4 <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/miksi-vaivautua-automaattiseen-lataukseen-wordpressissae-osa-1\/\" title=\"viestiss\u00e4ni\">viestiss\u00e4ni<\/a> k\u00e4sittelin muutamia seikkoja siit\u00e4, miksi mielest\u00e4ni <strong>include_once, <em><\/em><\/strong> request_once<em><\/em> ja muut vastaavat v\u00e4itteet johtavat huonoihin kehitysk\u00e4yt\u00e4nt\u00f6ihin (ainakin mit\u00e4 tulee WordPress-projektiemme parissa tekem\u00e4mme ty\u00f6skentelyyn ).<\/p>\n<p>Jos et ole lukenut sit\u00e4, ei h\u00e4t\u00e4\u00e4. Viestin ydin on, ett\u00e4 n\u00e4m\u00e4 lausunnot sanovat:<\/p>\n<ol>\n<li>virheenkorjaus vaikeampaa,<\/li>\n<li>j\u00e4ljityskoodi on vaikeampi tehd\u00e4.<\/li>\n<\/ol>\n<p>Loppujen lopuksi ne ovat asioita, joita voimme v\u00e4ltt\u00e4\u00e4. P\u00e4\u00e4tin postauksen seuraavaan:<\/p>\n<p>T\u00e4m\u00e4 j\u00e4tt\u00e4\u00e4 silti kysymyksen siit\u00e4, miksi automaattista latausta (tai kolmannen osapuolen tiedostojen sis\u00e4llytt\u00e4mist\u00e4) ylip\u00e4\u00e4t\u00e4\u00e4n tarvitaan.<\/p>\n<p>Ja vaikka haluaisin k\u00e4sitell\u00e4 kaikki yksityiskohdat t\u00e4ss\u00e4 viestiss\u00e4, t\u00e4m\u00e4 ja viel\u00e4 yksi viesti on t\u00e4rke\u00e4 ymm\u00e4rt\u00e4\u00e4 joitakin kieli\u00e4, tulkkeja ja k\u00e4\u00e4nt\u00e4ji\u00e4 koskevia perusaiheita ennen kuin l\u00e4hden liian pitk\u00e4lle.<\/p>\n<h2>Automaattinen lataus WordPressiss\u00e4: Kielityypit<\/h2>\n<p>Mit\u00e4 tulee ohjelmointikieliin, ne voidaan jakaa kahteen erityyppiseen kieliin:<\/p>\n<ol>\n<li>staattisesti kirjoitettu<\/li>\n<li>dynaamisesti kirjoitettu<\/li>\n<\/ol>\n<p>Ne on my\u00f6s helppo havaita.<\/p>\n<h3>Staattisesti kirjoitetut kielet<\/h3>\n<p>Staattisesti kirjoitettu kieli tarkoittaa, ett\u00e4 kun ilmoitat muuttujan, kuten merkkijonon, kokonaisluvun tai liukulukuluvun, se s\u00e4ilytt\u00e4\u00e4 kyseisen tyypin koko sen elinkaaren ajan.<\/p>\n<p>T\u00e4m\u00e4 ei tarkoita, ettei sit\u00e4 voisi muuttaa tai j\u00e4sent\u00e4\u00e4 toiseksi tyypiksi, mutta ideana on, ett\u00e4 m\u00e4\u00e4rittelet sen tyypin ja niin sit\u00e4 k\u00e4ytet\u00e4\u00e4n.<\/p>\n<p>Se m\u00e4\u00e4ritet\u00e4\u00e4n yleens\u00e4 tietyksi tyypiksi, kun se ilmoitetaan, kuten <strong>merkkijono<\/strong> tai <strong>int<\/strong>, ja se n\u00e4kyy useimmiten k\u00e4\u00e4nnetyill\u00e4 kielill\u00e4.<\/p>\n<h3>Dynaamisesti kirjoitetut kielet<\/h3>\n<p>Toisaalta dynaamisesti kirjoitetuissa kieliss\u00e4 on muuttujia, jotka ovat paremman termin puuttuessa luonteeltaan joustavampia.<\/p>\n<p>Eli voit aluksi ilmoittaa sen <strong>merkkijonoksi<\/strong> ja verrata sit\u00e4 sitten <strong>kokonaislukuun<\/strong> ja k\u00e4ytt\u00e4\u00e4 sit\u00e4 my\u00f6hemmin uudelleen <strong>merkkijonona<\/strong>.<\/p>\n<p>Tulkki tai k\u00e4\u00e4nt\u00e4j\u00e4 (riippuen siit\u00e4, mit\u00e4 kielt\u00e4 k\u00e4yt\u00e4t) tekee parhaansa p\u00e4\u00e4tell\u00e4kseen, mit\u00e4 yrit\u00e4t tehd\u00e4 koodissasi tekem\u00e4si kontekstin perusteella, mutta se ei aina ole oikein.<\/p>\n<p>Se voi johtaa outoihin sivuvaikutuksiin ja bugeihin.<\/p>\n<p>JavaScript on t\u00e4llainen. Jos haluat n\u00e4hd\u00e4 esimerkin, avaa selaimesi konsoli ja kirjoita jotain seuraavan kuvakaappauksen kaltaista (ja kiinnit\u00e4 huomiota tulokseen):<\/p>\n<p>Huomaa, ett\u00e4 kun k\u00e4yt\u00e4mme standardia tuplayhtym\u00e4merkki\u00e4, tulkki pakottaa merkkijonon boolen tyyppiin, vaikka todellinen merkkijono ei ole tosi.<\/p>\n<p>Toinen tapaus on tarkka (ja siksi kolminkertaista yht\u00e4l\u00f6\u00e4 tulisi melkein aina k\u00e4ytt\u00e4\u00e4).<\/p>\n<p>Lis\u00e4ksi se, miten jokin voi toimia yhdell\u00e4 kielell\u00e4, ei ole sit\u00e4, miten se voi toimia toisella kielell\u00e4.\n<\/p>\n<p>T\u00e4rkeint\u00e4 on, ett\u00e4 \u00e4l\u00e4 odota kielesi tekev\u00e4n samaa vain siksi, ett\u00e4 ne saattavat tukea dynaamista kirjoittamista.<\/p>\n<h2>Mit\u00e4 tekemist\u00e4 t\u00e4ll\u00e4 on automaattilatauksen kanssa?<\/h2>\n<p>Okei, olemme siis puhuneet v\u00e4h\u00e4n primitiiveist\u00e4 ja kaikki t\u00e4m\u00e4 on hienoa, mutta se ei tee paljon, kun puhutaan luokista, objekteista, ilment\u00e4misest\u00e4, automaattisesta latauksesta ja niin edelleen.<\/p>\n<p>Edell\u00e4 mainittujen aiheiden nostamisen tarkoituksena on osoittaa tulkkien ja k\u00e4\u00e4nt\u00e4jien rooli dynaamisten kielten koodin parissa.<\/p>\n<p>Ja t\u00e4m\u00e4 on t\u00e4rke\u00e4\u00e4, koska PHP on dynaaminen kieli.<\/p>\n<p>T\u00e4ss\u00e4 vaiheessa aioin alunperin alkaa tarkastella PHP-mallikoodia, nimiavaruuksia, automaattista latausta, <strong>sis\u00e4llytt\u00e4\u00e4<\/strong> lauseita ja kaikkea muuta, mutta yrit\u00e4n pit\u00e4\u00e4 artikkelini tietyn pituisena ja t\u00e4m\u00e4 alkoi veny\u00e4 hieman pidemm\u00e4lle kuin halusin. .<\/p>\n<p>Joten lopullinen poiminta t\u00e4st\u00e4 viestist\u00e4, jos minun piti tehd\u00e4 siit\u00e4 yhteenveto, on t\u00e4m\u00e4:<\/p>\n<p>Dynaamisesti kirjoitetuille kielille, kuten PHP:lle, ei anneta k\u00e4\u00e4nnettyjen kielten ylellisyytt\u00e4, jossa kaikki on k\u00e4\u00e4nnetty yhteen binaariin. Meid\u00e4n on kerrottava ohjelmalle jollain tavalla, miss\u00e4 riippuvuudet ovat olemassa suuremman ohjelman yhteydess\u00e4.<\/p>\n<p>Ja sit\u00e4 aion k\u00e4sitell\u00e4 seuraavassa postauksessa.<\/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>Dynaamisesti kirjoitettujen kielten ja staattisesti kirjoitettujen kielten ymm\u00e4rt\u00e4minen on avainasemassa WordPressin ja PHP:n automaattisen lataamisen ymm\u00e4rt\u00e4misess\u00e4.<\/p>\n","protected":false},"author":1,"featured_media":165674,"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-229955","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\/229955","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=229955"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229955\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/165674"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}