{"id":234146,"date":"2022-11-15T10:30:00","date_gmt":"2022-11-15T07:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234146"},"modified":"2022-11-15T10:33:22","modified_gmt":"2022-11-15T07:33:22","slug":"miksi-vaivautua-automaattiseen-lataamiseen-wordpressissae-osa-3","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/miksi-vaivautua-automaattiseen-lataamiseen-wordpressissae-osa-3\/","title":{"rendered":"Miksi vaivautua automaattiseen lataamiseen WordPressiss\u00e4, osa 3"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/miksi-vaivautua-automaattiseen-lataukseen-wordpressissae-osa-2\/\" title=\"Edellisess\u00e4 viestiss\u00e4\">Edellisess\u00e4 viestiss\u00e4<\/a> sanoin, ett\u00e4 meill\u00e4 ei ole varaa samoihin ylellisyyksiin kuin staattisesti kirjoitetuilla, k\u00e4\u00e4nnetyill\u00e4 kielill\u00e4. Erityisesti puhuin ajatuksesta, ettei tarvitse olla tekemisiss\u00e4 automaattisten latauslaitteiden kanssa.<\/p>\n<p>Sen sijaan k\u00e4\u00e4nnetyt kielet voivat ottaa kaikki ohjelman muodostavat tiedostot, k\u00e4sitell\u00e4 ne ja niputtaa ne yhdeksi binaariksi.<\/p>\n<p>Mutta tehd\u00e4ksesi sen, se tarvitsee tietyn tyyppisen ohjelman.<\/p>\n<h2>Automaattinen lataus WordPressiss\u00e4: linkittimet ja automaattiset latauslaitteet<\/h2>\n<p>Eli se k\u00e4ytt\u00e4\u00e4 apuohjelmaa, jota kutsutaan <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linker_(computing)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">linkkeriksi<\/a>. K\u00e4sittelen sit\u00e4 lyhyesti, mutta sen roolin n\u00e4keminen k\u00e4\u00e4nnettyjen kielten kontekstissa voi auttaa piirt\u00e4m\u00e4\u00e4n analogian WordPressin (ja PHP:n) automaattisen lataamisen kanssa.<\/p>\n<h3>Mik\u00e4 linkki on?<\/h3>\n<p>Riippuen kielest\u00e4, jolla ty\u00f6skentelet, erityisesti olio-ohjelmointikielill\u00e4, on todenn\u00e4k\u00f6ist\u00e4, ett\u00e4 koodi levi\u00e4\u00e4 useisiin tiedostoihin.<\/p>\n<p>Lis\u00e4ksi jokainen n\u00e4ist\u00e4 tiedostoista niputetaan paketteihinsa (kutsumme n\u00e4it\u00e4 nimiavaruuksiksi nimell\u00e4 PHP, ja useimmat k\u00e4\u00e4nnetyt kielet tekev\u00e4t samoin). Joten esittelytarkoituksessa oletetaan, ett\u00e4 tiedostot sis\u00e4ltyv\u00e4t niiden nimiavaruuksiin.<\/p>\n<p>Sitten koko koodikannassa sinulla on kaikki n\u00e4m\u00e4 tiedostot, jotka liittyv\u00e4t nimiavaruuksiin, mutta jotka ovat hajallaan eri tiedostoissa.<\/p>\n<p>Kun on aika koota t\u00e4m\u00e4 kaikki yhdeksi suoritettavaksi bin\u00e4\u00e4ritiedostoksi, linkkeriksi kutsuttu ohjelma analysoi koodin ja toimii sen taikuuden avulla auttaakseen luomaan yhden suoritettavan binaarin (verrattuna tiedostokokoelmaan, kuten olemme tottuneet n\u00e4kem\u00e4\u00e4n PHP-pohjaiset projektit).<\/p>\n<h3>Ja automaattinen lataus?<\/h3>\n<p>Mit\u00e4 yht\u00e4l\u00e4isyyksi\u00e4 automaattisen lataamisen ja linkityksen v\u00e4lill\u00e4 on? Kuten mainittiin, WordPressiss\u00e4 (ja PHP:ss\u00e4) rakentamamme projektit sijaitsevat jatkuvasti erillisiss\u00e4 tiedostoissa. Eli niit\u00e4 ei koskaan koota yhdeksi tiedostoksi.<\/p>\n<p>Sanoisin, ett\u00e4 kerran (vaikka n\u00e4in tapahtuu edelleen), k\u00e4yt\u00e4mme <a href=\"https:\/\/php.net\/manual\/en\/function.include-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">include_once-<\/a> tai <a href=\"https:\/\/php.net\/manual\/en\/function.require-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">request_once<\/a> -m\u00e4\u00e4ritteit\u00e4 tuodaksemme kaikki tarvitsemamme riippuvuudet. Mutta automaattinen lataus tekee t\u00e4m\u00e4n tarpeen.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165652-61e7858e62d47.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-165652-61e7858e62d47.jpg\" alt=\"Miksi vaivautua automaattiseen lataamiseen WordPressiss\u00e4, osa 3\"><\/a><\/p>\n<p>Autoloaderin kirjoittaminen manuaalisesti (ilman PSR4:\u00e4\u00e4).<\/p>\n<p>Sen sijaan automaattinen latausohjelma voi ottaa meill\u00e4 olevan koodin aina, kun esimerkiksi luomme luokan, ja lataa sitten automaattisesti (siis sen nimen) tiedoston ilman, ett\u00e4 tiedostoa tarvitsee sis\u00e4llytt\u00e4\u00e4 manuaalisesti.<\/p>\n<h3>Analogia<\/h3>\n<p>Linkkeri analysoi ohjelman koodikannan ja kokoaa binaarin automaattisesti, mutta automaattilataaja tarvitsee jonkin tyyppisen konfiguraation ilmoittaakseen, miss\u00e4 luokat ovat, kuinka tiedosto paikantuu tiedostoj\u00e4rjestelm\u00e4st\u00e4 sen nimiavaruuden ja luokan nimen perusteella, ja pian.<\/p>\n<p>Lis\u00e4ksi t\u00e4m\u00e4 voidaan tehd\u00e4 eri tavoilla riippuen siit\u00e4, haluatko k\u00e4ytt\u00e4\u00e4 jotain, kuten <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4:<\/a> \u00e4\u00e4 vai muuta latausstrategiaa. Mutta se ei kuulu t\u00e4m\u00e4n postauksen piiriin.<\/p>\n<h2>Se siit\u00e4<\/h2>\n<p>Ajatuksena t\u00e4m\u00e4n kaiken takana on ymm\u00e4rt\u00e4\u00e4, kuinka staattisesti kirjoitetut kielet, jotka ovat usein \u2013 vaikkakaan eiv\u00e4t aina \u2013 k\u00e4\u00e4nnettyj\u00e4 kieli\u00e4 ja kuinka dynaamisesti kirjoitetut \u2013 joita ei useinkaan k\u00e4\u00e4nnet\u00e4 (mielest\u00e4n JavaScript, PHP jne.) \u2013 voivat toimia samanlaisissa, vaikkakin eri tavoilla.<\/p>\n<p>Lyhyesti:<\/p>\n<ul>\n<li>k\u00e4\u00e4nnetyt kielet k\u00e4ytt\u00e4v\u00e4t linkkereit\u00e4,<\/li>\n<li>dynaamiset kielet k\u00e4ytt\u00e4v\u00e4t automaattilatauksia.<\/li>\n<\/ul>\n<p>Ja siin\u00e4 on oikeastaan \u200b\u200bkaikki.<\/p>\n<p>Mutta miksi t\u00e4m\u00e4 on t\u00e4rke\u00e4\u00e4? Ymm\u00e4rt\u00e4\u00e4kseni WordPressin automaattisen lataamisen edut ja saadakseni perustan edistyneemmille aiheille, mielest\u00e4ni on t\u00e4rke\u00e4\u00e4 ymm\u00e4rt\u00e4\u00e4, miten ja miksi teemme tiettyj\u00e4 asioita.<\/p>\n<p>Ja jos ei muuta, se voi auttaa meit\u00e4 olemaan parempia kehitt\u00e4ji\u00e4.<\/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>Linkkerit eiv\u00e4t eroa t\u00e4ysin WordPressin (ja PHP:n) automaattisesta latauksesta. T\u00e4ss\u00e4 kerrotaan, kuinka ne toimivat ja miksi se auttaa ymm\u00e4rt\u00e4m\u00e4\u00e4n, miten ne toimivat.<\/p>\n","protected":false},"author":1,"featured_media":223872,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,843,864],"tags":[1166],"class_list":["post-234146","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/234146","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=234146"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/234146\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223872"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=234146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=234146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=234146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}