{"id":234114,"date":"2022-11-15T11:18:00","date_gmt":"2022-11-15T08:18:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234114"},"modified":"2022-11-15T11:18:18","modified_gmt":"2022-11-15T08:18:18","slug":"po-co-zawracac-sobie-glowe-automatycznym-ladowaniem-w-wordpressie-czesc-3","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/po-co-zawracac-sobie-glowe-automatycznym-ladowaniem-w-wordpressie-czesc-3\/","title":{"rendered":"Po co zawraca\u0107 sobie g\u0142ow\u0119 automatycznym \u0142adowaniem w WordPressie, cz\u0119\u015b\u0107 3"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/po-co-zawracac-sobie-glowe-automatycznym-ladowaniem-w-wordpressie-czesc-2\/\" title=\"W ostatnim po\u015bcie\">W ostatnim po\u015bcie<\/a> powiedzia\u0142em, \u017ce nie sta\u0107 nas na niekt\u00f3re z tych samych luksus\u00f3w, kt\u00f3re maj\u0105 statycznie pisane, skompilowane j\u0119zyki. W szczeg\u00f3lno\u015bci m\u00f3wi\u0142em o pomy\u015ble, aby nie mie\u0107 do czynienia z autoloaderami.<\/p>\n<p>Zamiast tego j\u0119zyki skompilowane mog\u0105 pobiera\u0107 wszystkie pliki sk\u0142adaj\u0105ce si\u0119 na program, przetwarza\u0107 je i pakowa\u0107 w jeden plik binarny.<\/p>\n<p>Ale \u017ceby to zrobi\u0107, potrzebuje do tego specjalnego programu.<\/p>\n<h2>Automatyczne \u0142adowanie w WordPress: Linkery i Autoloadery<\/h2>\n<p>Oznacza to, \u017ce u\u017cywa narz\u0119dzia o nazwie <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linker_(computing)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">linker<\/a>. Om\u00f3wi\u0119 to kr\u00f3tko, ale zobaczenie roli, jak\u0105 odgrywa w kontek\u015bcie j\u0119zyk\u00f3w kompilowanych, mo\u017ce pom\u00f3c w narysowaniu analogii do tego, jak dzia\u0142a automatyczne \u0142adowanie w WordPress (i PHP).<\/p>\n<h3>Co to jest \u0142\u0105cznik?<\/h3>\n<p>W zale\u017cno\u015bci od j\u0119zyka, z kt\u00f3rym pracujesz, zw\u0142aszcza w przypadku j\u0119zyk\u00f3w programowania obiektowego, prawdopodobnie kod b\u0119dzie roz\u0142o\u017cony na wiele plik\u00f3w.<\/p>\n<p>Co wi\u0119cej, ka\u017cdy z tych plik\u00f3w zostanie do\u0142\u0105czony do ich pakiet\u00f3w (nazywamy je przestrzeniami nazw jako PHP i wi\u0119kszo\u015b\u0107 j\u0119zyk\u00f3w kompilowanych r\u00f3wnie\u017c robi to samo). Tak wi\u0119c dla cel\u00f3w demonstracyjnych za\u0142\u00f3\u017cmy, \u017ce pliki s\u0105 zawarte w ich przestrzeniach nazw.<\/p>\n<p>Nast\u0119pnie, w ca\u0142ym kodzie, masz wszystkie te pliki, kt\u00f3re s\u0105 powi\u0105zane poprzez przestrzenie nazw, ale s\u0105 roz\u0142o\u017cone w osobnych plikach.<\/p>\n<p>Kiedy przychodzi czas na skompilowanie tego wszystkiego w jeden wykonywalny plik binarny, program zwany linkerem analizuje kod i dzia\u0142a magicznie, aby pom\u00f3c w stworzeniu pojedynczego, wykonywalnego pliku binarnego (w przeciwie\u0144stwie do zbioru plik\u00f3w, do kt\u00f3rych przywykli\u015bmy projekty oparte na PHP).<\/p>\n<h3>A automatyczne \u0142adowanie?<\/h3>\n<p>Jakie s\u0105 wi\u0119c podobie\u0144stwa mi\u0119dzy automatycznym \u0142adowaniem a linkowaniem? Jak wspomniano, projekty, kt\u00f3re budujemy w WordPressie (i PHP) konsekwentnie znajduj\u0105 si\u0119 w osobnych plikach. Oznacza to, \u017ce nigdy nie zostan\u0105 skompilowane do jednego pliku.<\/p>\n<p>Powiedzia\u0142bym, \u017ce kiedy\u015b (chocia\u017c to si\u0119 nadal zdarza), u\u017cywamy <a href=\"https:\/\/php.net\/manual\/en\/function.include-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">include_once<\/a> lub <a href=\"https:\/\/php.net\/manual\/en\/function.require-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">require_once<\/a>, aby wprowadzi\u0107 wszystkie potrzebne nam zale\u017cno\u015bci. Ale automatyczne \u0142adowanie neguje potrzeb\u0119 zrobienia tego.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165652-61e7858e62d47.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-165652-61e7858e62d47.jpg\" alt=\"Po co zawraca\u0107 sobie g\u0142ow\u0119 automatycznym \u0142adowaniem w WordPressie, cz\u0119\u015b\u0107 3\"><\/a><\/p>\n<p>R\u0119czne pisanie autoloadera (bez u\u017cycia PSR4).<\/p>\n<p>Zamiast tego autoloader mo\u017ce pobra\u0107 kod, kt\u00f3ry mamy, gdy, powiedzmy, tworzymy instancj\u0119 klasy, a nast\u0119pnie automatycznie \u0142aduje (st\u0105d jego nazwa) plik bez konieczno\u015bci r\u0119cznego do\u0142\u0105czania pliku.<\/p>\n<h3>Analogia<\/h3>\n<p>Podczas gdy linker przeanalizuje baz\u0119 kodu programu i automatycznie z\u0142o\u017cy plik binarny, autoloader b\u0119dzie potrzebowa\u0142 pewnego rodzaju konfiguracji, aby poinformowa\u0107 go, gdzie znajduj\u0105 si\u0119 klasy, jak zlokalizowa\u0107 plik w systemie plik\u00f3w, bior\u0105c pod uwag\u0119 jego przestrze\u0144 nazw i nazw\u0119 klasy, oraz wkr\u00f3tce.<\/p>\n<p>Co wi\u0119cej, mo\u017cna to zrobi\u0107 na r\u00f3\u017cne sposoby, w zale\u017cno\u015bci od tego, czy zdecydujesz si\u0119 u\u017cy\u0107 czego\u015b takiego jak <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4,<\/a> czy innej strategii \u0142adowania. Ale to wykracza poza zakres tego postu.<\/p>\n<h2>Ot\u00f3\u017c \u200b\u200bto<\/h2>\n<p>Ide\u0105 tego wszystkiego jest zrozumienie, w jaki spos\u00f3b j\u0119zyki statycznie typowane, kt\u00f3re s\u0105 cz\u0119sto \u2013 cho\u0107 nie zawsze \u2013 j\u0119zykami skompilowanymi, oraz jak typowane dynamicznie \u2013 cz\u0119sto nieskompilowane (pomy\u015bl o JavaScript, PHP itp.) \u2013 mog\u0105 dzia\u0142a\u0107 w podobnym, aczkolwiek r\u00f3\u017cne sposoby.<\/p>\n<p>W skr\u00f3cie:<\/p>\n<ul>\n<li>j\u0119zyki skompilowane u\u017cywaj\u0105 linker\u00f3w,<\/li>\n<li>j\u0119zyki dynamiczne u\u017cywaj\u0105 autoloader\u00f3w.<\/li>\n<\/ul>\n<p>I to wszystko, naprawd\u0119.<\/p>\n<p>Ale dlaczego jest to wa\u017cne? Aby zrozumie\u0107 korzy\u015bci p\u0142yn\u0105ce z automatycznego \u0142adowania w WordPressie i mie\u0107 podstawy do bardziej zaawansowanych temat\u00f3w, uwa\u017cam, \u017ce wa\u017cne jest, aby zrozumie\u0107, jak i dlaczego robimy pewne rzeczy, kt\u00f3re robimy.<\/p>\n<p>A je\u015bli nic wi\u0119cej, mo\u017ce nam pom\u00f3c by\u0107 lepszymi programistami.<\/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>Linkery nie r\u00f3\u017cni\u0105 si\u0119 zupe\u0142nie od automatycznego \u0142adowania w WordPress (i PHP). Oto, jak dzia\u0142aj\u0105 i dlaczego pomaga zrozumie\u0107, jak dzia\u0142aj\u0105.<\/p>\n","protected":false},"author":1,"featured_media":223872,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,845,866],"tags":[1169],"class_list":["post-234114","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/234114","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=234114"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/234114\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/223872"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=234114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=234114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=234114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}