{"id":229358,"date":"2022-11-13T13:05:00","date_gmt":"2022-11-13T10:05:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229358"},"modified":"2022-11-13T13:08:53","modified_gmt":"2022-11-13T10:08:53","slug":"kuidas-kasutada-psr-4-wordpressi-pistikprogrammide-automaatset-laadimist","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kuidas-kasutada-psr-4-wordpressi-pistikprogrammide-automaatset-laadimist\/","title":{"rendered":"Kuidas kasutada PSR-4 WordPressi pistikprogrammide automaatset laadimist"},"content":{"rendered":"\n<p>Oletagem, et t\u00f6\u00f6tate kellegi jaoks projekti kallal ja olete selle v\u00e4lja m\u00e4\u00e4ranud, \u00fclesanded on delegeeritud, teil on k\u00f5ik alustamiseks vajalikud teegid ja t\u00f6\u00f6riistad ning olete eraldanud teema v\u00f5i esitluse ja millised on funktsioonid v\u00f5i pistikprogrammid.<\/p>\n<p>Aga selle asemel, et omada k\u00e4put\u00e4is \u00fcksikuid pistikprogramme, mis siis, kui paketi toiteks t\u00f6\u00f6taks pakett v\u00e4iksemaid funktsionaalseid pistikprogramme v\u00f5i mikropistikprogramme v\u00f5i kuidas iganes neid nimetada?<\/p>\n<p>Lisaks, mis k\u00f5ik on \u00fcles ehitatud samale alusele, kuid jagavad ka omavahel koodi ja asjade huvitavamaks muutmiseks otsustate selle k\u00f5ige eest hoolitsemiseks kasutada PSR-4 automaatlaadurit <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composeri kaudu?<\/a><\/p>\n<h2>PSR-4 WordPressi pistikprogrammide automaatne laadimine<\/h2>\n<p>Esiteks, viis m\u00f5elda sellele, mida ma \u00fcritan \u00f6elda (sest kes teab, kas ma saan selgeks \ud83d\ude43), on see, et teie t\u00f6\u00f6 on <code>wp-content\/plugins<\/code>kataloogis. Ja teie pistikprogramm asub n\u00e4iteks <code>acme-plugins<\/code>ja sellel on teie mikropistikprogrammide alamkataloogid.<\/p>\n<p>J\u00e4tame selle n\u00e4ite puhul lihtsaks ja \u00fctleme, et seal on p\u00f5hiplugin ja siis ainult \u00fcks mikroplugin. Kataloog n\u00e4eks v\u00e4lja umbes selline;<\/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=\"Kuidas kasutada PSR-4 WordPressi pistikprogrammide automaatset laadimist\"><\/a><\/p>\n<p>N\u00fc\u00fcd on failid, mida eeldate pistikprogrammis n\u00e4ha:<\/p>\n<ul>\n<li>LOE ME,<\/li>\n<li>LITSENTS,<\/li>\n<li>CHANGELOG,<\/li>\n<li>helilooja.json<\/li>\n<li>helilooja.lukk<\/li>\n<li>m\u00fc\u00fcja<\/li>\n<li>pistikprogrammi alglaadimisfail,<\/li>\n<li>jne.<\/li>\n<\/ul>\n<p>N\u00fc\u00fcd on asi j\u00e4rgmine: kui kasutate <a href=\"http:\/\/www.php-fig.org\/psr\/psr-2\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-2<\/a> ja kavatsete kasutada <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> automaatlaadurit, siis peate teadma kahte asja:<\/p>\n<ol>\n<li>Nimeruumid peaksid \u00fchtima kataloogi organisatsiooniga. R\u00e4\u00e4kisin sellest veidi <a href=\"https:\/\/wordpress.mediadoma.com\/et\/nimeruumid-ja-automaatne-laadimine-wordpressis\/\" title=\"oma WordCamp Atlanta 2017 esitluses\">oma WordCamp Atlanta 2017 esitluses<\/a> (t\u00e4psemalt virtuaalse ja loogilise korralduse all).<\/li>\n<li>Kuidas automaatlaadurite m\u00e4\u00e4ratlemiseks t\u00f6\u00f6tada <code>composer.json<\/code>. <a href=\"https:\/\/getcomposer.org\/doc\/01-basic-usage.md#autoloading\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Siit<\/a> saate selle kohta palju lugeda, kuid selle postituse \u00fclej\u00e4\u00e4nud osas annan kaljum\u00e4rkmed.<\/li>\n<\/ol>\n<p>Seega on probleem selles, et <code>vendor<\/code>kataloog asub m\u00f5ne l\u00e4htefaili olemasolu tasemest k\u00f5rgemal. Seega standardne viis kohandatud automaatlaaduri seadistamiseks rakenduses Composer ei t\u00f6\u00f6ta.<\/p>\n<p>N\u00e4iteks on v\u00e4ga t\u00fc\u00fcpiline <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c7703a3b7c27594918f0af7a2a7d5fe4#file-00-composer-autoloader-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4ha j\u00e4rgmist<\/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>Kuid oma t\u00f6\u00f6 kompenseerimiseks peame <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c7703a3b7c27594918f0af7a2a7d5fe4#file-01-composer-updated-autoloader-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tegema j\u00e4rgmist<\/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>See on lihtne muudatus, kuid see on lihtne n\u00e4ide, eks? Mis on siis sellest v\u00e4ljav\u00f5te?<\/p>\n<p>Pange t\u00e4hele, et oleme v\u00e4rskendanud m\u00f5ningaid muudatusi <strong>automaatse laadimise<\/strong> asukohas. T\u00e4psemalt toimub see:<\/p>\n<ul>\n<li>Esimene element on \u00fclataseme nimeruum, kuhu kuuluvad k\u00f5ik <strong>Acme pluginasse<\/strong> kuuluvad pluginad.<\/li>\n<li>Teine kirje viitab <strong>MicroPluginile<\/strong>, mida n\u00e4ete \u00fclaltoodud kataloogis. See t\u00e4histab selle konkreetse pistikprogrammi nimeruumi ja k\u00e4sib Composeril otsida l\u00e4htefaile, mida atribuutide kataloogi kasutades automaatselt laadida<\/li>\n<\/ul>\n<p>Siit lisate automaatlaaduri jaoks uue kirje, mis vastab igale tipptaseme pistikprogrammi kuuluvale mikropluginale.<\/p>\n<h2>Tulevaste mikropluginate korraldamine<\/h2>\n<p>Koodi korraldamiseks nii, et saaksite kasutada vaikeautomaatset laadijat, on mitu v\u00f5imalust.<\/p>\n<p>Kui j\u00e4rgite mikropistikprogrammi (parema termini puudumisel) mudelit, siis see ei t\u00f6\u00f6ta, nii et peate oma faile \u00fcmber korraldama ja see v\u00f5ib aja jooksul valus olla.<\/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 WordPressi pistikprogrammide automaatne laadimine pole keeruline, aga mis siis, kui soovite kasutada \u00fchte pistikprogrammi, mis koosneb erinevatest pistikprogrammidest, ja ka need automaatselt laadida?<\/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":[894,842,812,863],"tags":[1165],"class_list":["post-229358","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kood","category-opetused","category-pistikprogrammid","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229358","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=229358"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229358\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223885"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}