{"id":229380,"date":"2022-11-17T18:55:00","date_gmt":"2022-11-17T15:55:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229380"},"modified":"2022-11-09T06:46:10","modified_gmt":"2022-11-09T03:46:10","slug":"programowanie-obiektowe-w-wordpress-analiza-czesc-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/programowanie-obiektowe-w-wordpress-analiza-czesc-1\/","title":{"rendered":"Programowanie obiektowe w WordPress: analiza, cz\u0119\u015b\u0107 1"},"content":{"rendered":"\n<p>Kiedy po raz pierwszy zacz\u0105\u0142em oferowa\u0107 <a href=\"https:\/\/tommcfarlin.com\/membership-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cz\u0142onkostwo<\/a> na tej stronie, wiedzia\u0142em, \u017ce pierwsz\u0105 rzecz\u0105, kt\u00f3r\u0105 chc\u0119 si\u0119 zaj\u0105\u0107, jest wprowadzenie do programowania obiektowego.<\/p>\n<p>Jest to co\u015b, co wydaje si\u0119 by\u0107 interesuj\u0105ce dla wi\u0119kszo\u015bci os\u00f3b pracuj\u0105cych w WordPressie, ale jest problem, kt\u00f3ry albo odwraca wielu ludzi, albo generuje s\u0142abe wyniki:<\/p>\n<p>Programowanie obiektowe mo\u017ce szybko si\u0119 skomplikowa\u0107. A to staje si\u0119 demotywuj\u0105ce.<\/p>\n<p>Oto, co mam na my\u015bli: Za\u0142\u00f3\u017cmy, \u017ce jeste\u015b programist\u0105 WordPress, kt\u00f3ry zaczyna bada\u0107 programowanie obiektowe. Zaczyna si\u0119 od m\u00f3wienia o klasach, konstruktorach i funkcjach, i wszystko wydaje si\u0119 dobrze.<\/p>\n<p>Ale potem szybko przechodzi do:<\/p>\n<ul>\n<li>metody prywatne i chronione,<\/li>\n<li>dziedzictwo,<\/li>\n<li>wielopostaciowo\u015b\u0107,<\/li>\n<li>wzorce projektowe,<\/li>\n<li>wstrzykiwanie zale\u017cno\u015bci,<\/li>\n<li>repozytoria,<\/li>\n<li>i tak dalej.<\/li>\n<\/ul>\n<p>To \u015bnie\u017cki, prawda? I wcale tak nie musi by\u0107, ale trudno jest znale\u017a\u0107 odpowiednie wprowadzenie, z wyj\u0105tkiem <a href=\"https:\/\/carlalexander.ca\/discover-object-oriented-programming\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kilku<\/a> dost\u0119pnych zasob\u00f3w.<\/p>\n<p>Bior\u0105c to wszystko pod uwag\u0119 (i s\u0142u\u017c\u0105c jako t\u0142o dla tego, dok\u0105d zmierzam), chcia\u0142em stworzy\u0107 seri\u0119 tre\u015bci dla tych, kt\u00f3rzy:<\/p>\n<ul>\n<li>s\u0105 szczerze zainteresowani programowaniem obiektowym,<\/li>\n<li>nie wiesz od czego zacz\u0105\u0107,<\/li>\n<li>chc\u0105 rozwija\u0107 swoje umiej\u0119tno\u015bci,<\/li>\n<li>chc\u0105 zacz\u0105\u0107 od punktu zerowego bez zbyt szybkiego przechodzenia do bardziej skomplikowanego materia\u0142u.<\/li>\n<\/ul>\n<p>I to w\u0142a\u015bnie zaczynam dzisiaj iw pierwszej powa\u017cnej planowanej powa\u017cnej dla <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cz\u0142onk\u00f3w<\/a>. Powiedziawszy to wszystko, zacznijmy.<\/p>\n<p>W szczeg\u00f3lno\u015bci zacznijmy m\u00f3wi\u0107 o programowaniu obiektowym, analizie, projektowaniu i dlaczego powinna od tego zacz\u0105\u0107.<\/p>\n<h2>Programowanie obiektowe: analiza<\/h2>\n<p>Je\u015bli chodzi o pisanie kodu, obecnie s\u0105 na to trzy popularne sposoby:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funkcjonalny<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">proceduralny<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zorientowany obiektowo<\/a>.<\/li>\n<\/ul>\n<p>Za ka\u017cdym razem, gdy pracujemy i czytamy kod WordPress, b\u0119dziesz czyta\u0107 kombinacj\u0119 kodu proceduralnego i kodu obiektowego.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.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-165350-61e77e125a74e.png\" alt=\"Programowanie obiektowe w WordPress: analiza, cz\u0119\u015b\u0107 1\" ><\/a><\/p>\n<p>Jest kilka powod\u00f3w, dla kt\u00f3rych tak jest, ale wykracza to poza zakres naszej dyskusji.<\/p>\n<p>Dzieje si\u0119 tak dlatego, \u017ce WordPress jest zbudowany z obu i poniewa\u017c niekt\u00f3re aspekty programowania WordPress mog\u0105 by\u0107 napisane za pomoc\u0105 kodu proceduralnego, takiego jak wtyczki i motywy, a inne wymagaj\u0105 programowania obiektowego, takiego jak <a href=\"https:\/\/codex.wordpress.org\/Widgets_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wid\u017cety<\/a>.<\/p>\n<h3>Analiza i projektowanie<\/h3>\n<p>Tak cz\u0119sto pierwsz\u0105 rzecz\u0105, kt\u00f3r\u0105 chcemy zrobi\u0107 jako programi\u015bci (pocz\u0105tkuj\u0105cy lub nie), jest natychmiastowe przyst\u0105pienie do pisania kodu. Ja te\u017c. To zabawne. Mamy pomys\u0142, chcemy go urzeczywistni\u0107, chcemy zacz\u0105\u0107 z niego korzysta\u0107 i chcemy go pokaza\u0107 innym.<\/p>\n<p>Oto jednak problem z robieniem tego: cz\u0119sto przechodzimy od razu do pisania kodu, aby spr\u00f3bowa\u0107 sprawi\u0107, by projekt robi\u0142 to, czego chcemy.<\/p>\n<p>Je\u015bli jest to prosty (a mam na my\u015bli naprawd\u0119 prosty) projekt, to nie jest to taka wielka sprawa. Szczerze m\u00f3wi\u0105c, zrobi\u0142em to (a <a href=\"https:\/\/github.com\/tommcfarlin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> jest tego dowodem). Ale je\u015bli chodzi o prac\u0119, kt\u00f3r\u0105 wykonujemy w <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pressware<\/a> ; to inna historia.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.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-165350-61e77e173b695.png\" alt=\"Programowanie obiektowe w WordPress: analiza, cz\u0119\u015b\u0107 1\" ><\/a><\/p>\n<p>Je\u015bli chodzi o takie projekty, chcemy zrobi\u0107 troch\u0119 analizy i projektowania przed napisaniem kodu.<\/p>\n<p>Co rodzi pytanie, czym jest analiza i projektowanie obiektowe?<\/p>\n<h4>Analiza<\/h4>\n<p>Kr\u00f3tko m\u00f3wi\u0105c, pomy\u015bl o tym w ten spos\u00f3b:<\/p>\n<p>Analiza to proces przejmowania pomys\u0142u klienta lub tego, co masz i wydobycia tego, co naprawd\u0119 musi zosta\u0107 zbudowane.<\/p>\n<p>Mo\u017ce to pom\u00f3c w ustaleniu, co jest celem aplikacji, a co nie jest konieczne w przypadku pierwszej wersji aplikacji. Lubi\u0119 okre\u015bla\u0107 je jako \u201eniezb\u0119dne&quot; i \u201emi\u0142o mie\u0107&#8221;.<\/p>\n<p>Dobra zasada jest taka:<\/p>\n<ul>\n<li><strong>must-have<\/strong> to rzeczy, kt\u00f3re s\u0105 rdzeniem aplikacji i musz\u0105 przej\u015b\u0107 do pierwszej iteracji projektu,<\/li>\n<li>rzeczy, kt\u00f3re w ko\u0144cu mo\u017cemy w ni\u0105 wbudowa\u0107, to rzeczy, kt\u00f3re warto <strong>mie\u0107<\/strong><\/li>\n<\/ul>\n<p>Ostatecznie pomaga nam to w pracy nad siln\u0105 pierwsz\u0105 wersj\u0105 dla klienta. By\u0107 mo\u017ce jeden przyk\u0142ad dotyczy WordPressa:<\/p>\n<ul>\n<li>Czy pierwsza wersja WordPressa musia\u0142a mie\u0107 interfejs API wtyczek, czy po prostu musia\u0142a umo\u017cliwia\u0107 ludziom pisanie post\u00f3w i publikowanie ich w sieci?<\/li>\n<\/ul>\n<p>Je\u015bli budujesz platform\u0119 do blogowania, czy musi by\u0107 rozszerzalna od pierwszej wersji? To tylko przyk\u0142ad, ale masz pomys\u0142.<\/p>\n<h4>Co sprawia, \u017ce \u200b\u200banaliza jest tak trudna?<\/h4>\n<p>My\u015bl\u0119, \u017ce cz\u0119sto ma to zwi\u0105zek z personami.<\/p>\n<p>Na przyk\u0142ad my, jako programi\u015bci, uwa\u017camy, \u017ce projekt powinien zawsze robi\u0107 to, czego chce klient. Prawda jest taka, \u017ce \u200b\u200bnie zawsze tak jest.<\/p>\n<p>To znaczy, w ko\u0144cu mo\u017ce tak by\u0107, ale pierwsza wersja projektu niekoniecznie musi tak by\u0107.<\/p>\n<p>Co wi\u0119cej, jedn\u0105 z zasad programowania obiektowego jest to, \u017ce nie piszemy wielu duplikat\u00f3w kodu. Ale mo\u017ce to by\u0107 bardzo trudne, je\u015bli nie przeprowadzono odpowiedniej analizy.<\/p>\n<p>Wreszcie ci, kt\u00f3rzy s\u0105 bardziej do\u015bwiadczeni, powiedz\u0105, \u017ce dobre oprogramowanie b\u0119dzie korzysta\u0107 ze sprawdzonych i prawdziwych zasad \u2013 czy to wzorc\u00f3w projektowych, czy nie \u2013 ale z czasem mo\u017cna je \u0142atwo zmienia\u0107. To w pewnym sensie ro\u015bnie organicznie.<\/p>\n<h2>Wi\u0119c co mamy zrobi\u0107?<\/h2>\n<p>W nast\u0119pnym artykule om\u00f3wi\u0119 trzy rzeczy, kt\u00f3re mo\u017cemy zrobi\u0107 jako programi\u015bci, aby upewni\u0107 si\u0119, \u017ce oprogramowanie, kt\u00f3re budujemy dla siebie lub innych, prowadzi nas we w\u0142a\u015bciwym kierunku.<\/p>\n<p>Nie powiem, \u017ce to srebrna kula, poniewa\u017c nie wierz\u0119, \u017ce istnieje, ale powiem, \u017ce jest to do\u015b\u0107 mocne podej\u015bcie, kt\u00f3re znalaz\u0142em dla innych i dobrze jak ja i \u017ce prowadzi w ca\u0142kiem dobrym kierunku w zakresie analizy obiektowej.<\/p>\n<p>To ostatecznie doprowadzi nas do projektowania. Ale jeszcze nas tam nie ma.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programowanie obiektowe w WordPressie, nie m\u00f3wi\u0105c ju\u017c o dowolnej platformie, mo\u017ce by\u0107 trudnym zadaniem. Ale chc\u0119 zacz\u0105\u0107 od punktu zerowego i stamt\u0105d i\u015b\u0107 dalej.<\/p>\n","protected":false},"author":1,"featured_media":165351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,836,845],"tags":[1169],"class_list":["post-229380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-przewodnik-dla-poczatkujacych","category-samouczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=229380"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229380\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/165351"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}