{"id":234138,"date":"2022-11-15T10:33:00","date_gmt":"2022-11-15T07:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234138"},"modified":"2022-11-15T10:33:26","modified_gmt":"2022-11-15T07:33:26","slug":"miks-wordpressis-automaatse-laadimisega-vaeva-naeha-3-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/miks-wordpressis-automaatse-laadimisega-vaeva-naeha-3-osa\/","title":{"rendered":"Miks WordPressis automaatse laadimisega vaeva n\u00e4ha, 3. osa"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/et\/miks-wordpressis-automaatse-laadimisega-vaeva-naeha-2-osa\/\" title=\"Viimases postituses\">Viimases postituses<\/a> \u00fctlesin, et me ei saa endale lubada samasugust luksust, mis on staatiliselt tr\u00fckitud ja kompileeritud keeltel. T\u00e4psemalt, ma r\u00e4\u00e4kisin ideest, et ei peaks automaatlaaduritega tegelema.<\/p>\n<p>Selle asemel v\u00f5ivad kompileeritud keeled v\u00f5tta k\u00f5ik programmi moodustavad failid, neid t\u00f6\u00f6delda ja koondada \u00fcheks binaarfailiks.<\/p>\n<p>Kuid selleks on vaja teatud t\u00fc\u00fcpi programmi.<\/p>\n<h2>Automaatne laadimine WordPressis: linkerid ja automaatlaadurid<\/h2>\n<p>See t\u00e4hendab, et see kasutab utiliiti, mida nimetatakse <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linker_(computing)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">linkeriks<\/a>. Kirjeldan seda l\u00fchidalt, kuid selle rolli n\u00e4gemine kompileeritud keelte kontekstis v\u00f5ib aidata luua analoogia WordPressi (ja PHP) automaatse laadimise toimimisega.<\/p>\n<h3>Mis on linker?<\/h3>\n<p>Olenevalt keelest, millega t\u00f6\u00f6tate, eriti objektorienteeritud programmeerimiskeelte puhul, on t\u00f5en\u00e4oline, et kood levib mitme faili vahel.<\/p>\n<p>Lisaks koondatakse k\u00f5ik need failid oma pakettidesse (nimetame neid nimeruumideks kui PHP-d ja sama teevad ka enamik kompileeritud keeli). Seega eeldage tutvustamise eesm\u00e4rgil, et failid sisalduvad nende nimeruumides.<\/p>\n<p>Seej\u00e4rel on koodibaasis k\u00f5ik need failid, mis on seotud nimeruumide kaudu, kuid jaotatud erinevate failide vahel.<\/p>\n<p>Kui on aeg see k\u00f5ik \u00fcheks k\u00e4ivitatavaks binaarfailiks kompileerida, anal\u00fc\u00fcsib linker-nimeline programm koodi ja t\u00f6\u00f6tab selle v\u00f5luv\u00e4el, et aidata luua \u00fchtne k\u00e4ivitatav kahendfail (v\u00f5rreldes failide kogumiga, nagu oleme harjunud n\u00e4gema PHP-p\u00f5hised projektid).<\/p>\n<h3>Ja automaatne laadimine?<\/h3>\n<p>Millised on sarnasused automaatse laadimise ja linkimise vahel? Nagu mainitud, asuvad WordPressis (ja PHP-s) loodud projektid pidevalt eraldi failides. See t\u00e4hendab, et neid ei kompileerita kunagi \u00fcheks failiks.<\/p>\n<p>\u00dctleksin, et kunagi ammu (kuigi seda juhtub ikka veel), kasutame <a href=\"https:\/\/php.net\/manual\/en\/function.include-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">atribuute include_once<\/a> v\u00f5i <a href=\"https:\/\/php.net\/manual\/en\/function.require-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">request_once<\/a>, et tuua sisse k\u00f5ik vajalikud s\u00f5ltuvused. Kuid automaatne laadimine v\u00e4listab vajaduse seda teha.<\/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=\"Miks WordPressis automaatse laadimisega vaeva n\u00e4ha, 3. osa\"><\/a><\/p>\n<p>Autoloaderi k\u00e4sitsi kirjutamine (ilma PSR4 kasutamata).<\/p>\n<p>Selle asemel v\u00f5ib automaatlaadur v\u00f5tta meie k\u00e4sutuses oleva koodi alati, kui me n\u00e4iteks klassi instantseerime, ja seej\u00e4rel faili automaatselt laadida (seega selle nimi), ilma et oleks vaja faili k\u00e4sitsi lisada.<\/p>\n<h3>Analoogia<\/h3>\n<p>Kui linker anal\u00fc\u00fcsib programmi koodibaasi ja koostab automaatselt kahendfaili, siis automaatlaadur vajab teatud t\u00fc\u00fcpi konfiguratsiooni, et anda teada, kus klassid asuvad, kuidas failis\u00fcsteemis faili asukohta selle nimeruumi ja klassi nime alusel leida ning nii edasi.<\/p>\n<p>Lisaks on seda v\u00f5imalik teha mitmel erineval viisil, olenevalt sellest, kas otsustate kasutada midagi nagu <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> v\u00f5i m\u00f5nda muud laadimisstrateegiat. Kuid see ei kuulu selle postituse ulatusse.<\/p>\n<h2>See on k\u00f5ik<\/h2>\n<p>Selle k\u00f5ige m\u00f5te on m\u00f5ista, kuidas staatiliselt tr\u00fckitud keeled, mis on sageli \u2013 kuigi mitte alati \u2013 kompileeritud keeled, ja kuidas d\u00fcnaamiliselt tr\u00fckitud keeled \u2013 mida sageli ei kompileerita (m\u00f5elge JavaScriptile, PHP-le jne) \u2013 saavad t\u00f6\u00f6tada sarnastes, kuigi erinevatel viisidel.<\/p>\n<p>L\u00fchidalt:<\/p>\n<ul>\n<li>kompileeritud keeled kasutavad linkereid,<\/li>\n<li>d\u00fcnaamilised keeled kasutavad automaatlaadureid.<\/li>\n<\/ul>\n<p>Ja see on t\u00f5esti k\u00f5ik.<\/p>\n<p>Aga miks see oluline on? Et m\u00f5ista WordPressi automaatse laadimise eeliseid ja saada p\u00f5hjalikumaid teemasid, on minu arvates oluline m\u00f5ista, kuidas ja miks me teatud asju teeme.<\/p>\n<p>Ja kui mitte midagi muud, v\u00f5ib see aidata meil olla paremad arendajad.<\/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>Linkerid ei erine t\u00e4ielikult WordPressi (ja PHP) automaatlaadimisest. Siit saate teada, kuidas need t\u00f6\u00f6tavad ja miks see aitab m\u00f5ista nende toimimist.<\/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":[718,842,863],"tags":[1165],"class_list":["post-234138","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/234138","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=234138"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/234138\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223872"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=234138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=234138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=234138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}