{"id":229910,"date":"2022-11-13T13:12:00","date_gmt":"2022-11-13T10:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229910"},"modified":"2022-11-13T13:23:54","modified_gmt":"2022-11-13T10:23:54","slug":"psr-4-n-automaattisen-lataamisen-wordpress-laajennusten-kaeyttaeminen","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/psr-4-n-automaattisen-lataamisen-wordpress-laajennusten-kaeyttaeminen\/","title":{"rendered":"PSR-4:n automaattisen lataamisen WordPress-laajennusten k\u00e4ytt\u00e4minen"},"content":{"rendered":"\n<p>Oletetaan, ett\u00e4 ty\u00f6skentelet jonkun projektin parissa ja olet m\u00e4\u00e4ritt\u00e4nyt sen, teht\u00e4vi\u00e4 on delegoitu, sinulla on kaikki aloittamiseen tarvittavat kirjastot ja ty\u00f6kalut ja olet erottanut teeman tai esityksen. mitk\u00e4 ovat toiminnot tai laajennukset.<\/p>\n<p>Mutta sen sijaan, ett\u00e4 sinulla olisi kourallinen yksitt\u00e4isi\u00e4 laajennuksia, ent\u00e4 jos paketissa olisi paketti pienempi\u00e4 toiminnallisia laajennuksia tai mikrolaajennuksia tai mill\u00e4 tahansa nimell\u00e4, joka toimisi paketin tehostamiseksi?<\/p>\n<p>Lis\u00e4ksi, jotka kaikki on rakennettu samalle perustalle, mutta jotka my\u00f6s jakavat koodia kesken\u00e4\u00e4n ja tehd\u00e4ksesi asioista mielenkiintoisempia, p\u00e4\u00e4t\u00e4t k\u00e4ytt\u00e4\u00e4 PSR-4 automaattista latausohjelmaa <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composerin<\/a> kautta huolehtiaksesi kaikesta t\u00e4st\u00e4?<\/p>\n<h2>PSR-4 WordPress-laajennusten automaattinen lataus<\/h2>\n<p>Ensinn\u00e4kin tapa ajatella sit\u00e4, mit\u00e4 yrit\u00e4n sanoa (koska tiet\u00e4\u00e4, olenko selv\u00e4 \ud83d\ude43), on, ett\u00e4 sinulla on ty\u00f6si <code>wp-content\/plugins<\/code>hakemistossa. Ja laajennuksesi sijaitsee esimerkiksi, <code>acme-plugins<\/code>ja siin\u00e4 on alihakemistoja mikrolaajennuksillesi.<\/p>\n<p>Pid\u00e4mme t\u00e4m\u00e4n yksinkertaisena t\u00e4ss\u00e4 esimerkiss\u00e4 ja sanomme, ett\u00e4 siell\u00e4 on p\u00e4\u00e4laajennus ja sitten vain yksi mikrolaajennus. Hakemisto n\u00e4ytt\u00e4isi suunnilleen t\u00e4lt\u00e4;<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165780-61e788fa5037d.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-165780-61e788fa5037d.png\" alt=\"PSR-4:n automaattisen lataamisen WordPress-laajennusten k\u00e4ytt\u00e4minen\"><\/a><\/p>\n<p>Nyt on tiedostot, jotka odotat n\u00e4kev\u00e4si laajennuksessa:<\/p>\n<ul>\n<li>README,<\/li>\n<li>LISENSSI,<\/li>\n<li>CHANGELOG,<\/li>\n<li>s\u00e4velt\u00e4j\u00e4.json<\/li>\n<li>s\u00e4velt\u00e4j\u00e4.lukko<\/li>\n<li>myyj\u00e4<\/li>\n<li>laajennuksen bootstrap-tiedosto,<\/li>\n<li>jne.<\/li>\n<\/ul>\n<p>Nyt asia on t\u00e4ss\u00e4: Jos k\u00e4yt\u00e4t <a href=\"http:\/\/www.php-fig.org\/psr\/psr-2\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-2<\/a> :ta ja aiot k\u00e4ytt\u00e4\u00e4 <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> automaattista latausohjelmaa, sinun on tiedett\u00e4v\u00e4 kaksi asiaa:<\/p>\n<ol>\n<li>Nimiavaruuksien tulee vastata hakemiston organisaatiota. Puhuin t\u00e4st\u00e4 hieman <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nimitilat-ja-automaattinen-lataus-wordpressissae\/\" title=\"WordCamp Atlanta 2017 -esitykseni\">WordCamp Atlanta 2017 -esitykseni<\/a> aikana (erityisesti virtuaalisen ja loogisen organisaation alla).<\/li>\n<li>Kuinka ty\u00f6skennell\u00e4 <code>composer.json<\/code>m\u00e4\u00e4ritt\u00e4\u00e4ksesi automaattiset latauslaitteet. Voit lukea t\u00e4st\u00e4 paljon <a href=\"https:\/\/getcomposer.org\/doc\/01-basic-usage.md#autoloading\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4\u00e4lt\u00e4<\/a>, mutta annan cliff-muistiinpanot t\u00e4m\u00e4n viestin loppuosassa.<\/li>\n<\/ol>\n<p>Joten ongelmana on, ett\u00e4 <code>vendor<\/code>hakemisto sijaitsee tason yl\u00e4puolella, jossa jotkut l\u00e4hdetiedostot ovat olemassa. N\u00e4in ollen tavallinen tapa m\u00e4\u00e4ritt\u00e4\u00e4 mukautettu automaattinen lataus Composerissa ei toimi.<\/p>\n<p>Esimerkiksi t\u00e4m\u00e4 on hyvin <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c7703a3b7c27594918f0af7a2a7d5fe4#file-00-composer-autoloader-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tyypillist\u00e4<\/a> :<\/p>\n<pre><code>{\n  \"name\": \"pressware\/acme-plugins\",\n  \"description\": \"A demo plugin\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Acme\": \"src\/\",\n    }\n  },\n  \/\/ ...\n}<\/code><\/pre>\n<p>Mutta ty\u00f6mme kompensoimiseksi meid\u00e4n on <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c7703a3b7c27594918f0af7a2a7d5fe4#file-01-composer-updated-autoloader-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">teht\u00e4v\u00e4 t\u00e4m\u00e4<\/a> :<\/p>\n<pre><code>{\n  \"name\": \"pressware\/acme-plugins\",\n  \"description\": \"A demo plugin\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Acme\": \"\",\n      \"AcmeMicroPlugin\": \"MicroPlugin\/src\/\"\n    }\n  },\n  \/\/ ...\n}<\/code><\/pre>\n<p>Se on yksinkertainen muutos, mutta se on yksinkertainen esimerkki, eik\u00f6 niin? Joten mik\u00e4 on take away t\u00e4st\u00e4?<\/p>\n<p>Huomaa, ett\u00e4 olemme p\u00e4ivitt\u00e4neet joitain muutoksia <strong>automaattisen latauksen<\/strong> sijaintiin. Tarkemmin sanottuna t\u00e4m\u00e4 on mit\u00e4 tapahtuu:<\/p>\n<ul>\n<li>Ensimm\u00e4inen kohde on ylimm\u00e4n tason nimiavaruus, johon kaikki <strong>Acme-laajennukseen<\/strong> kuuluvat laajennukset kuuluvat.<\/li>\n<li>Toinen merkint\u00e4 viittaa <strong>MicroPluginiin<\/strong>, jonka n\u00e4et yll\u00e4 olevassa hakemistossa. T\u00e4m\u00e4 edustaa t\u00e4m\u00e4n laajennuksen nimiavaruutta ja k\u00e4skee Composeria etsim\u00e4\u00e4n l\u00e4hdetiedostoja automaattisesti ladattavaksi ominaisuushakemiston avulla<\/li>\n<\/ul>\n<p>T\u00e4\u00e4lt\u00e4 lis\u00e4\u00e4t uuden merkinn\u00e4n automaattiseen latausohjelmaan, joka vastaa jokaista ylimm\u00e4n tason laajennukseen kuuluvaa mikrolaajennusta.<\/p>\n<h2>Tulevien mikrolaajennusten j\u00e4rjest\u00e4minen<\/h2>\n<p>On olemassa muutamia tapoja, joilla voit j\u00e4rjest\u00e4\u00e4 koodisi niin, ett\u00e4 voit k\u00e4ytt\u00e4\u00e4 oletusarvoista automaattista latausohjelmaa.<\/p>\n<p>Jos noudatat mikroliit\u00e4nn\u00e4ist\u00e4 (paremman termin puuttuessa) mallia, se ei toimi, joten joudut j\u00e4rjest\u00e4m\u00e4\u00e4n tiedostosi uudelleen, mik\u00e4 voi olla tuskaa ajan my\u00f6t\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>PSR-4:n WordPress-laajennusten automaattinen lataaminen ei ole vaikeaa, mutta ent\u00e4 jos haluat k\u00e4ytt\u00e4\u00e4 yht\u00e4 laajennusta, joka koostuu useista laajennuksista, ja ladata ne my\u00f6s automaattisesti?<\/p>\n","protected":false},"author":1,"featured_media":223885,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[895,813,843,864],"tags":[1166],"class_list":["post-229910","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koodi","category-laajennuksia","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229910","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=229910"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229910\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223885"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}