{"id":229272,"date":"2022-11-14T12:31:00","date_gmt":"2022-11-14T09:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229272"},"modified":"2022-11-14T12:33:47","modified_gmt":"2022-11-14T09:33:47","slug":"po-co-zawracac-sobie-glowe-automatycznym-ladowaniem-w-wordpressie-czesc-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/po-co-zawracac-sobie-glowe-automatycznym-ladowaniem-w-wordpressie-czesc-1\/","title":{"rendered":"Po co zawraca\u0107 sobie g\u0142ow\u0119 automatycznym \u0142adowaniem w WordPressie, cz\u0119\u015b\u0107 1"},"content":{"rendered":"\n<p>Jedn\u0105 z naj\u0142atwiejszych rzeczy, kt\u00f3re mo\u017cemy zrobi\u0107 podczas pracy z wtyczkami WordPress, jest\u00a0 pomini\u0119cie instrukcji <strong>require_once<\/strong> lub <strong>include_once<\/strong> w ca\u0142ym kodzie.<\/p>\n<p>Czemu nie? Jest to \u0142atwy spos\u00f3b na wprowadzenie wszystkich niezb\u0119dnych plik\u00f3w lub zale\u017cno\u015bci dla danej klasy, czytelno\u015b\u0107 i nie musisz martwi\u0107 si\u0119 tworzeniem ogromnych plik\u00f3w kodu. Oznacza to, \u017ce pomaga nam upro\u015bci\u0107 to, co piszemy, tak aby\u015bmy mogli sprawi\u0107, by nasze klasy [g\u0142\u00f3wnie lub idealnie] robi\u0142y to, co robi\u0105 dobrze.<\/p>\n<p>Je\u015bli jednak czyta\u0142e\u015b t\u0119 stron\u0119 przez ostatni rok, wiesz, \u017ce jestem fanem automatycznego \u0142adowania i my\u015bl\u0119, \u017ce ka\u017cdy pracuj\u0105cy z PHP \u2013 niezale\u017cnie od tego, czy u\u017cywasz WordPressa, czy innej platformy \u2013 powinien pos\u0142ugiwa\u0107 si\u0119.<\/p>\n<p>Ale rodzi to dwa pytania, zw\u0142aszcza je\u015bli dopiero zaczynasz:<\/p>\n<ol>\n<li>Po co zawraca\u0107 sobie g\u0142ow\u0119 automatycznym \u0142adowaniem, skoro istniej\u0105 inne sposoby obs\u0142ugi zale\u017cno\u015bci \u0142adowania?<\/li>\n<li>W jaki spos\u00f3b automatyczne \u0142adowanie wypada w por\u00f3wnaniu z j\u0119zykami skompilowanymi?<\/li>\n<\/ol>\n<p>Pomy\u015bla\u0142em wi\u0119c, \u017ce warto odpowiedzie\u0107 na to pytanie w kilku nast\u0119pnych postach.<\/p>\n<h2>Po co zawraca\u0107 sobie g\u0142ow\u0119 automatycznym \u0142adowaniem?<\/h2>\n<p>W skr\u00f3cie to:<\/p>\n<ol>\n<li><strong>require_once<\/strong> i <strong>include_once<\/strong> mog\u0105 prowadzi\u0107 do kodu trudnego do debugowania,<\/li>\n<li>trudno jest namierzy\u0107 kod.<\/li>\n<\/ol>\n<p>Ale jak to mo\u017cliwe?<\/p>\n<h3>1 Debugowanie jest trudne<\/h3>\n<p>Podczas pisania kodu, je\u015bli co\u015b jest pewne, to jest to, \u017ce b\u0119dzie co\u015b, co nie dzia\u0142a zgodnie z przeznaczeniem. To le\u017cy w naturze tego, co robimy, prawda?<\/p>\n<p>Wi\u0119c kiedy przychodzi czas na debugowanie kodu, wszyscy mamy swoje strategie.<\/p>\n<ul>\n<li>niekt\u00f3rzy z nas decyduj\u0105 si\u0119 na u\u017cycie <strong>echo<\/strong> lub <strong>var_dump<\/strong> do \u015bledzenia kodu,<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/debug-bar-console\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">korzysta\u0107 z wtyczki<\/a> w WordPressie,<\/li>\n<li>inni u\u017cywaj\u0105 debugera.<\/li>\n<\/ul>\n<p>Chocia\u017c ten post nie dotyczy debugowania, to fakt, \u017ce musimy debugowa\u0107. Wi\u0119c je\u015bli wiemy, \u017ce b\u0119dziemy musieli to zrobi\u0107, czy nie powinni\u015bmy zrobi\u0107 tego tak \u0142atwo dla siebie, jak to tylko mo\u017cliwe?<\/p>\n<p>PHP jest j\u0119zykiem dynamicznie typowanym, wi\u0119c generalnie jest wiele rzeczy, kt\u00f3rymi zajmujemy si\u0119 za ka\u017cdym razem, gdy piszemy kod. Oznacza to, \u017ce pewne rzeczy s\u0105 wywnioskowane lub wymuszane za ka\u017cdym razem, gdy kod jest uruchamiany.<\/p>\n<p>Za\u0142\u00f3\u017cmy na przyk\u0142ad, \u017ce pracujesz z ci\u0105giem i por\u00f3wnujesz go z liczb\u0105. Interpreter zrobi wszystko, co w jego mocy, aby odgadn\u0105\u0107, co robisz (czy chcesz przetworzy\u0107 ci\u0105g na liczb\u0119 ca\u0142kowit\u0105 czy odwrotnie?), a nast\u0119pnie z tym pracowa\u0107.<\/p>\n<p>Praca z samymi zmiennymi mo\u017ce by\u0107 \u0107wiczeniem z precyzj\u0105, poniewa\u017c chcemy, aby nasz kod by\u0142 czytany zgodnie z naszymi intencjami. Po co zgadywa\u0107 t\u0142umaczowi, o co nam chodzi? A je\u015bli t\u0142umacz musi wykona\u0107 dodatkow\u0105 prac\u0119, z pewno\u015bci\u0105 robi\u0105 to ludzie.<\/p>\n<p>W tym celu, je\u015bli wiemy, \u017ce zostan\u0105 wprowadzone b\u0142\u0119dy i wiemy, \u017ce istniej\u0105 sposoby na napisanie czystszego kodu, dlaczego mieliby\u015bmy tego nie zrobi\u0107?<\/p>\n<h3>2 \u015aledzenie jest trudne (a mo\u017ce trudniejsze?)<\/h3>\n<p>Ale to nadal nie dostarcza powodu, dla kt\u00f3rego powinni\u015bmy polega\u0107 na czym\u015b takim jak autoloader w por\u00f3wnaniu z wbudowanymi funkcjami j\u0119zyka, prawda?<\/p>\n<p>Rozwa\u017c to: powiedzmy, \u017ce przegl\u0105dasz plik, pr\u00f3buj\u0105c znale\u017a\u0107 b\u0142\u0105d i natrafiasz na funkcj\u0119, kt\u00f3ra ma jaki\u015b kod, u\u017cywa <strong>include_once<\/strong>, a nast\u0119pnie u\u017cywa innego kodu.<\/p>\n<p>Oznacza to, \u017ce musisz przeczyta\u0107 kod, zachowa\u0107 go w my\u015blach, przeskoczy\u0107 do innego pliku, zrozumie\u0107 ten kod, a nast\u0119pnie wr\u00f3ci\u0107 do oryginalnego pliku. Zak\u0142ada si\u0119, \u017ce drugi plik r\u00f3wnie\u017c nie <strong>zawiera<\/strong> ani\u00a0 nie <strong>wymaga<\/strong> innych plik\u00f3w.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165694-61e786c8874b7.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-165694-61e786c8874b7.jpg\" alt=\"Po co zawraca\u0107 sobie g\u0142ow\u0119 automatycznym \u0142adowaniem w WordPressie, cz\u0119\u015b\u0107 1\"><\/a><\/p>\n<p>Nie bez powodu nazywa si\u0119 to kodem spaghetti.<\/p>\n<p>Maj\u0105c to na uwadze, mo\u017cesz zobaczy\u0107 k\u0142opoty, jakie to wprowadza, gdy zdecydujesz si\u0119 zagnie\u017adzi\u0107 ten kod w pozosta\u0142ej cz\u0119\u015bci programu. Kr\u00f3tko m\u00f3wi\u0105c, zagnie\u017adzi\u0142e\u015b w\u0142\u0105czanie zale\u017cno\u015bci, co z natury utrudnia \u015bledzenie, gdzie co\u015b mo\u017ce p\u00f3j\u015b\u0107 nie tak.<\/p>\n<p>Nie oznacza to, \u017ce automatyczne \u0142adowanie automatycznie to naprawia, ale oznacza to, \u017ce nie musi tak by\u0107. Zamiast tego mo\u017cesz napisa\u0107 kod, kt\u00f3ry tworzy wyst\u0105pienia klas, wywo\u0142uje metody, a nast\u0119pnie wykonuje kod bez konieczno\u015bci r\u0119cznego do\u0142\u0105czania czegokolwiek.<\/p>\n<h3>Bardziej czytelny, identyfikowalny kod<\/h3>\n<p>Robi\u0105c to, stwierdzam, \u017ce zmusza nas to do pisania czystszego kodu, prawdopodobnie bardziej \u0142atwego w utrzymaniu kodu. U\u0142atwia to r\u00f3wnie\u017c pisanie kodu, kt\u00f3ry mo\u017cemy \u0142atwiej \u015bledzi\u0107 i kt\u00f3ry jest \u0142atwiejszy do wykorzystania za pomoc\u0105 debugera.<\/p>\n<p>Oznacza to, \u017ce mo\u017cemy ustawi\u0107 punkty przerwania w niekt\u00f3rych miejscach w naszym kodzie, sprawi\u0107, \u017ce debuger automatycznie przeniesie nas do wywo\u0142ywanej klasy i wyjdzie z powrotem do funkcji, kt\u00f3ra j\u0105 wywo\u0142a\u0142a.<\/p>\n<p>Nie oznacza to, \u017ce nie mo\u017cna tego zrobi\u0107 w inny spos\u00f3b, ale korzy\u015bci znacznie przewy\u017cszaj\u0105 alternatywy. I oczywi\u015bcie nadal pozostaje pytanie, dlaczego automatyczne \u0142adowanie (lub jakiekolwiek w\u0142\u0105czanie plik\u00f3w stron trzecich) jest w og\u00f3le potrzebne.<\/p>\n<p>Ale to w\u0142a\u015bnie zostanie om\u00f3wione w drugiej cz\u0119\u015bci serii.<\/p>\n<h2>Inne czytanie<\/h2>\n<p>M\u00f3j post na temat <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/przestrzenie-nazw-i-automatyczne-ladowanie-w-wordpress\/\" title=\"Przestrzenie nazw i automatyczne \u0142adowanie w WordPressie\">Przestrzenie nazw i automatyczne \u0142adowanie w WordPressie<\/a>, a tak\u017ce <a href=\"https:\/\/github.com\/tommcfarlin\/simple-autoloader-for-wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Simple Autoloader dla WordPressa,<\/a> to dwa inne zasoby, kt\u00f3re oczywi\u015bcie znalaz\u0142em w zwi\u0105zku z tym konkretnym postem. Wi\u0119c je\u015bli masz czas, sprawd\u017a je (i nie wahaj si\u0119 otworzy\u0107 problemu lub \u017c\u0105dania \u015bci\u0105gni\u0119cia w prostym projekcie autoloadera).<\/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>M\u00f3wi\u0142em ju\u017c i pisa\u0142em o automatycznym \u0142adowaniu w WordPressie, ale nadal uwa\u017cam, \u017ce zalety automatycznego \u0142adowania pomagaj\u0105 pisa\u0107 zorganizowany, identyfikowalny kod.<\/p>\n","protected":false},"author":1,"featured_media":165695,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,845],"tags":[1169],"class_list":["post-229272","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-samouczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229272","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=229272"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229272\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/165695"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}