{"id":228977,"date":"2022-11-03T09:28:00","date_gmt":"2022-11-03T06:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228977"},"modified":"2022-11-09T05:09:58","modified_gmt":"2022-11-09T02:09:58","slug":"kiire-prototueuepimine-wordpressiga-kontseptsiooni-analueues","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-wordpressiga-kontseptsiooni-analueues\/","title":{"rendered":"Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsiooni anal\u00fc\u00fcs"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-wordpressiga-kontseptsioonist-pistikprogrammini\/\" title=\"Eelmises postituses\" >Eelmises postituses<\/a> hakkasin l\u00e4bima protsessi, mille k\u00e4igus viidi l\u00e4bi pistikprogrammi idee, mis protot\u00fc\u00fcpib selle kiiresti millekski, mis t\u00f6\u00f6tab WordPressis. Ja kuigi see t\u00f6\u00f6tab, ei j\u00e4rgi see tingimata objektorienteeritud p\u00f5him\u00f5tteid ega ole ka kohas, kus saaksime h\u00f5lpsalt funktsioone lisada.<\/p>\n<p>Ei, see ei ole argument, miks objektorientatsioon on parem. See on minu eelistatud viis koodi kirjutamiseks, seega l\u00e4henen sellele sel viisil.<\/p>\n<p>Ma tean, et n\u00e4idiskood, mille ma annan, on lihtne ja ma tean, et v\u00f5ib juhtuda, et midagi sellist v\u00f5ib j\u00e4tta nii, nagu see on. Kuid selle m\u00f5te on n\u00e4idata, kuidas v\u00f5tta kontseptsioon, selle protot\u00fc\u00fcp ja seej\u00e4rel viia see millekski, mis j\u00e4rgib objektorienteeritud p\u00f5him\u00f5tteid.<\/p>\n<p>Ja minu kogemuse j\u00e4rgi on seda keerulise n\u00e4itega algusest peale palju raskem teha. kui sa kaotad lugejad algusest peale, siis mis lootust on neil saada aru, mis tuleb?<\/p>\n<p>Seda arvestades vaatame eelmise postituse koodi ja teeme selle kohta veidi kontseptsioonianal\u00fc\u00fcsi, et n\u00e4ha, mis v\u00f5iks klassis h\u00e4sti toimida ja kuidas v\u00f5iksime hakata seda klasside abil korraldama. <a href=\"https:\/\/wordpress.mediadoma.com\/et\/nimeruumid-ja-automaatne-laadimine-wordpressis\/\" title=\"nimeruumid\" >nimeruumid<\/a> ja nii edasi.<\/p>\n<h2>M\u00f5iste anal\u00fc\u00fcs<\/h2>\n<p>Mis puutub programmeerimisse, siis on nii lihtne hakata kohe koodi kirjutama ja seej\u00e4rel esitama, kuni see teeb midagi, mida me tahame.<\/p>\n<p>Ja kui see toimib, on tunne, et oleme valmis ja saame edasi liikuda j\u00e4rgmise \u00fclesande juurde. Kuid suuremate projektide puhul pole see alati nii. Tegelikult on sageli parem teha enne edasiliikumist oma disaini objektorienteeritud anal\u00fc\u00fcsi veidi kontseptsioonianal\u00fc\u00fcsi.<\/p>\n<p>Lihtsalt kodeerimisega tegelemine ei ole alati parim l\u00e4henemine.<\/p>\n<h3>Juhtum anal\u00fc\u00fcsiks<\/h3>\n<p>N\u00e4ide: selle kirjutamise ajal arutleme \u00fche minu meeskonnakaaslasega selle \u00fcle, kas peaksime kursust laiendama v\u00f5i uue klassi kirjutama, et k\u00e4sitleda Google Mapsi API-st v\u00f5etud andmete geolokatsiooniteavet.<\/p>\n<p>Kas ma saan seda tiivustada ja kirjutada midagi, mis t\u00f6\u00f6tab? Muidugi. Kuid kas see integreerub rakendusega h\u00e4sti? Mitte ilma kontseptsiooni anal\u00fc\u00fcsi, planeerimise ja \u00fclej\u00e4\u00e4nud s\u00fcsteemiga koosk\u00f5lastamiseta.<\/p>\n<p>Ja see ongi anal\u00fc\u00fcsi eesm\u00e4rk.<\/p>\n<h3>Meie t\u00f6\u00f6 anal\u00fc\u00fcsimine<\/h3>\n<p>Mida see siis eile vaadatud pistikprogrammi jaoks t\u00e4hendab? Praegu on meil j\u00e4rgmised asjad:<\/p>\n<ul>\n<li>funktsioon, mis vastutab metakasti loomise ja selle sisu kuvamise eest,<\/li>\n<li>funktsioon andmebaasi p\u00e4ringute tegemiseks ja viimaste viimaste postituste hankimiseks,<\/li>\n<li>funktsioon tulemuste kuvamiseks metakastis<\/li>\n<li>funktsioon s\u00f5numi kuvamiseks, kui metakastis pole tulemusi<\/li>\n<\/ul>\n<p>Lisaks on mitmed neist funktsioonidest seotud konksudega, mis on osa WordPress API-st. Nimelt on metaboksi loomise funktsioon haakitud WordPressiga ja selle kaasfunktsioon kuva renderdamiseks on k\u00f5ik sama komponendi osad.<\/p>\n<p>Siis on meil olemas andmebaasi p\u00e4ringute tegemise funktsionaalsus ja vaadetega otseselt seotud funktsioonid.<\/p>\n<p>Kuidas see siis v\u00e4lja n\u00e4eks, kui joonistaksime selle v\u00e4lja erinevateks klassideks ja failideks, mis aitaksid seda objektorienteeritumalt luua?<\/p>\n<h3>\u00dchtset lahendust pole<\/h3>\n<p>\u00dchtset lahendust pole ja m\u00f5ned lahendused on palju arenenumad kui teised. Aga kuna ma \u00fcritan siin tasakaalu leida, siis l\u00e4henen sellele lihtsamalt, kui teha liiga palju t\u00f6\u00f6d abstraktsiooni, p\u00e4rimise, liideste ja k\u00f5ige muuga.<\/p>\n<h3>Keskendumine sellele, mis meil on<\/h3>\n<p>Keskendugem praegu \u00fcksikutele klassidele ja nendele kuuluvatele kohustustele. N\u00e4iteks:<\/p>\n<ul>\n<li>Ma arvan, et meil on vaja klassi, mis esindab metakasti. See peaks vastutama metakasti loomise eest.<\/li>\n<li>Vajame ka klassi, mis vastutab metakasti sisu kuvamise eest. V\u00f5ib arvata, et funktsiooni lisamine metakasti klassi toimib h\u00e4sti. See teeb; aga kui soovite m\u00f5elda, et igal klassil on \u00fcksainus vastutus, siis saame luua klassi spetsiaalselt kuvari jaoks ja spetsiaalselt metakasti jaoks, seej\u00e4rel sisestage kuva metakastisse installimise ajal. Sellest r\u00e4\u00e4gime hiljem l\u00e4hemalt.<\/li>\n<\/ul>\n<p>Sel hetkel v\u00f5ib meie diagramm v\u00e4lja n\u00e4ha umbes selline:<\/p>\n<p>Meta kasti l\u00f5hkumine.<\/p>\n<p>J\u00e4rgmisena peame kaaluma muid funktsioone. Nimelt funktsionaalsus tulemuste kuvamiseks metakastis ja funktsionaalsus tulemuste kuvamiseks, kui neid pole.<\/p>\n<p>Selleks, et metakastis midagi kuvada, peab meil olema v\u00f5imalus tulemuste toomiseks andmebaasist p\u00e4ringuid teha. Sealt edasi peame suutma kindlaks teha, kas tulemusi on v\u00f5i mitte, ja seej\u00e4rel sisestada need tulemused vaatesse.<\/p>\n<p>Arvestades seda teavet, tundub, et vajame andmebaasi p\u00e4ringute tegemiseks klassi ja seej\u00e4rel on meil vaja klassi s\u00f5numi metakasti kuvale laiali saatmiseks.<\/p>\n<p>V\u00f5ib-olla n\u00e4eb \u00fcks viis tundide korraldamiseks v\u00e4lja j\u00e4rgmine:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e79938d88c8.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-166719-61e79938d88c8.png\" alt=\"Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsiooni anal\u00fc\u00fcs\" ><\/a><\/p>\n<p>P\u00e4ringute tegemine andmebaasist ja s\u00f5numite koostamine.<\/p>\n<p>Diagrammi l\u00f5plik versioon v\u00f5ib olla veidi kitsas, kuid l\u00f5puks vaatame midagi sellist:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e7993eaf874.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-166719-61e7993eaf874.png\" alt=\"Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsiooni anal\u00fc\u00fcs\" ><\/a><\/p>\n<p>Meie klasside viimane korraldus.<\/p>\n<p>Selgituseks:<\/p>\n<ul>\n<li>Postituse retriiver k\u00fcsib andmebaasist kolme viimast viimast postitust.<\/li>\n<li>Postituss\u00f5num m\u00e4\u00e4rab, milline s\u00f5num ekraanile sisestada.<\/li>\n<li>Ekraanil kuvatakse m\u00e4\u00e4ratud teade.<\/li>\n<li>Metabast kuvab selle veebibrauseris.<\/li>\n<\/ul>\n<p>Seega oleme sisuliselt v\u00f5tnud m\u00f5ned WordPressiga \u00fchendatud funktsioonid ja jaganud need komponentideks, mis suudavad \u00fcksteisega suhelda, millest iga\u00fchega on suhteliselt lihtne t\u00f6\u00f6tada ja mis ei tee rohkem kui \u00fchte t\u00f6\u00f6d.<\/p>\n<h2>Selle teisendamine koodiks<\/h2>\n<p>N\u00fc\u00fcd, kui meil on idee, kuidas saaksime eelmise kontseptsiooni koodiks teisendada, vaatame j\u00e4rgmises paaris artiklis, kuidas seda teha.<\/p>\n<p>Pange t\u00e4hele, et koodi juurutamise v\u00f5i klasside kujundamise valik v\u00f5ib veidi erineda \u00fclaltoodust ja teil v\u00f5ib olla soovitusi, kuidas \u00fclaltoodut paremini korraldada. Kui see nii on, j\u00e4tke kommentaar.<\/p>\n<p>J\u00e4rgmises postituses vaatleme selle teisendamist funktsionaalseks koodiks ja p\u00e4rast seda, kuidas seda \u00f5igeteks nimeruumideks ja \u00f5igeks failikorralduseks korraldada.<\/p>\n<h2>Sarja postitused<\/h2>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-wordpressiga-kontseptsioonist-pistikprogrammini\/\" title=\"Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsioonist pistikprogrammini\" >Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsioonist pistikprogrammini<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/concept-analysis\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsiooni anal\u00fc\u00fcs<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-prototueuep-koodiks-1-osa\/\" title=\"Kiire protot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 1. osa\">Kiire protot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 1. osa<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiirprototueuepimine-prototueuep-koodiks-2-osa\/\" title=\"Kiirprotot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 2. osa\">Kiirprotot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 2. osa<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-automaatse-laadimise-tutvustamine\/\" title=\"Kiire protot\u00fc\u00fcpimine: automaatse laadimise tutvustamine\">Kiire protot\u00fc\u00fcpimine: automaatse laadimise tutvustamine<\/a><\/li>\n<\/ol>\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>Sageli on enne edasiliikumist parem teha oma kujunduse objektorienteeritud anal\u00fc\u00fcsi kontseptsioonianal\u00fc\u00fcs.<\/p>\n","protected":false},"author":1,"featured_media":223990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,916,842],"tags":[1165],"class_list":["post-228977","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-muud","category-opetused","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228977","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=228977"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228977\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=228977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=228977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=228977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}