{"id":229113,"date":"2022-11-10T13:42:00","date_gmt":"2022-11-10T10:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229113"},"modified":"2022-11-10T13:42:12","modified_gmt":"2022-11-10T10:42:12","slug":"biblioteki-dla-wtyczek-wordpress-czesc-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/biblioteki-dla-wtyczek-wordpress-czesc-1\/","title":{"rendered":"Biblioteki dla wtyczek WordPress, cz\u0119\u015b\u0107 1"},"content":{"rendered":"\n<p>Im wi\u0119cej pracujesz z WordPress, zw\u0142aszcza je\u015bli korzystasz z narz\u0119dzi takich jak <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> i tym podobnych, tym bardziej prawdopodobnie znajdziesz pewne biblioteki, narz\u0119dzia i podobne rzeczy, kt\u00f3re stanowi\u0105 podstaw\u0119 projekt\u00f3w, nad kt\u00f3rymi pracujesz.<\/p>\n<p>Czasami mo\u017cesz je znale\u017a\u0107 podczas przegl\u0105dania kodu innych os\u00f3b, mo\u017ce znajdziesz je podczas przegl\u0105dania GitHub, a mo\u017ce <a href=\"https:\/\/twitter.com\/tobyschrapel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kto\u015b, z<\/a> <a href=\"https:\/\/twitter.com\/twigpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kim<\/a> pracujesz, zasugeruje bibliotek\u0119 (lub kilka) w zale\u017cno\u015bci od projektu.<\/p>\n<p>Osobi\u015bcie mam do\u015bwiadczenie z wszystkimi powy\u017cszymi i im wi\u0119cej pracuj\u0119 nad budowaniem rozwi\u0105za\u0144 dla siebie lub innych, tym cz\u0119\u015bciej zak\u0142adam te same fundamenty dla ka\u017cdego projektu (co zwykle jest jak\u0105\u015b wtyczk\u0105) .<\/p>\n<h2>Biblioteki dla wtyczek WordPress<\/h2>\n<p>W tym celu pomy\u015bla\u0142em, \u017ce warto udost\u0119pni\u0107 biblioteki, kt\u00f3rych u\u017cywam przy tworzeniu wtyczek WordPress. Tre\u015b\u0107 b\u0119dzie roz\u0142o\u017cona na kilka post\u00f3w, aby ka\u017cdy z nich by\u0142 kr\u00f3tki i skoncentrowany, ale by\u0107 mo\u017ce znajdziesz co\u015b, czego wcze\u015bniej nie u\u017cywa\u0142e\u015b (lub co poprawi twoje obecne wykorzystanie).<\/p>\n<h3><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jednostka PHP<\/a><\/h3>\n<p>Ka\u017cdy, kto napisa\u0142 dowolny kod w dowolnym j\u0119zyku programowania, prawdopodobnie zna dowolny typ biblioteki *Unit. Kr\u00f3tko m\u00f3wi\u0105c, jest to spos\u00f3b na \u0142atwe pisanie test\u00f3w jednostkowych.<\/p>\n<p>Ze <a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">strony g\u0142\u00f3wnej projektu<\/a> :<\/p>\n<blockquote>\n<p>PHPUnit jest zorientowanym na programist\u0119 frameworkiem testowym dla PHP. Jest to instancja architektury xUnit dla framework\u00f3w test\u00f3w jednostkowych.<\/p>\n<\/blockquote>\n<p>Nie jestem kim\u015b, kto koniecznie subskrybuje 100% pokrycie kodu (i to temat na inny post), ale je\u015bli zamierzasz pisa\u0107 testy jednostkowe, to jest to de facto biblioteka do testowania jednostkowego twojego kodu.<\/p>\n<h3><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/h3>\n<p>Przez ca\u0142y ten rok <a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a> sta\u0142o si\u0119 prawdopodobnie moj\u0105 ulubion\u0105 bibliotek\u0105 (chocia\u017c zosta\u0142a ulepszona przez dodatkowe biblioteki, kt\u00f3re b\u0119d\u0119 omawia\u0107 w tej serii wpis\u00f3w).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78ddea0549.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-166075-61e78ddea0549.png\" alt=\"Biblioteki dla wtyczek WordPress, cz\u0119\u015b\u0107 1\"><\/a><\/p>\n<p>M\u00f3wi\u0142em o tym w innych postach. Chocia\u017c opisuje si\u0119 jako \u201enarz\u0119dzie jako\u015bci kodu&quot;, naprawd\u0119 nie mo\u017cesz nie dostrzec korzy\u015bci, dop\u00f3ki nie pod\u0142\u0105czysz go do ogl\u0105dania kodu przed pr\u00f3b\u0105 zatwierdzenia go do repozytorium.<\/p>\n<p>D\u0142u\u017cszy opis to:<\/p>\n<blockquote>\n<p>Je\u015bli testy zako\u0144cz\u0105 si\u0119 niepowodzeniem, nie b\u0119dziesz w stanie zatwierdzi\u0107 zmian. To przydatne narz\u0119dzie nie tylko ulepszy Tw\u00f3j kod, ale tak\u017ce nauczy Twoich wsp\u00f3\u0142pracownik\u00f3w pisania lepszego kodu zgodnie z najlepszymi praktykami, kt\u00f3re ustali\u0142e\u015b jako zesp\u00f3\u0142.<\/p>\n<\/blockquote>\n<p>I, tak jakby\u015b u\u017cywa\u0142 monitora <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/korzystanie-z-psr-w-porownaniu-ze-standardami-kodowania-wordpress\/\" title=\"standard\u00f3w kodowania\">standard\u00f3w kodowania<\/a> w swoim IDE, jest to jedna z tych rzeczy, kt\u00f3rych u\u017cywanie na pocz\u0105tku mo\u017ce by\u0107 frustruj\u0105ce.<\/p>\n<p>Ale kiedy si\u0119 tego nauczysz, \u0142atwiej b\u0119dzie wiedzie\u0107, co b\u0119dzie oznaczane, wi\u0119c automatycznie zaczniesz pisa\u0107 kod, kt\u00f3ry ma wy\u017cszy poziom jako\u015bci.<\/p>\n<h3><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a><\/h3>\n<p><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a> (skr\u00f3t od PHP Mess Detector) dzia\u0142a dobrze w po\u0142\u0105czeniu z GrumPHP, poniewa\u017c mo\u017ce przetwarza\u0107 Tw\u00f3j kod, zanim zatwierdzisz go w repozytorium.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78de324f34.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-166075-61e78de324f34.png\" alt=\"Biblioteki dla wtyczek WordPress, cz\u0119\u015b\u0107 1\"><\/a><\/p>\n<p>Projekt opisuje si\u0119 jako:<\/p>\n<blockquote>\n<p>Pobiera dan\u0105 baz\u0119 kodu \u017ar\u00f3d\u0142owego PHP i szuka kilku potencjalnych problem\u00f3w w tym \u017ar\u00f3dle.<\/p>\n<\/blockquote>\n<p>Podobnie jak w przypadku wielu podobnych bibliotek, ta konkretna mo\u017ce skonfigurowa\u0107 zestaw regu\u0142, dzi\u0119ki czemu mo\u017cesz \u0142atwo w\u0142\u0105cza\u0107 i wy\u0142\u0105cza\u0107 r\u00f3\u017cne rzeczy w zale\u017cno\u015bci od preferencji Ciebie lub Twojego zespo\u0142u.<\/p>\n<h3><a href=\"https:\/\/github.com\/nikic\/PHP-Parser\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parser PHP<\/a><\/h3>\n<p>Pomys\u0142 posiadania biblioteki parsera PHP do analizy kodu wydaje si\u0119 nieco meta, prawda? Mam na my\u015bli to, \u017ce robisz to \u015brodowisko wykonawcze PHP i wiele IDE r\u00f3wnie\u017c to robi, ale dzia\u0142a to w nieco inny spos\u00f3b.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78de6eec7f.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-166075-61e78de6eec7f.png\" alt=\"Biblioteki dla wtyczek WordPress, cz\u0119\u015b\u0107 1\"><\/a><\/p>\n<p>Z repozytorium:<\/p>\n<blockquote>\n<p>Jest to parser PHP 5.2 do PHP 7.1 napisany w PHP. Jego celem jest uproszczenie analizy i manipulacji kodem statycznym.<\/p>\n<\/blockquote>\n<p>Dla tych, kt\u00f3rzy wiedz\u0105, jak dzia\u0142aj\u0105 j\u0119zyki programowania (a tym samym gramatyki), pomys\u0142 przeprowadzenia <a href=\"https:\/\/en.wikipedia.org\/wiki\/Static_program_analysis\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">statycznej analizy<\/a> kodu b\u0119dzie mia\u0142 sens.<\/p>\n<p>Niezale\u017cnie od tego jest to kolejna biblioteka, kt\u00f3ra pomaga poprawi\u0107 jako\u015b\u0107 kodu poprzez zmniejszenie z\u0142o\u017cono\u015bci kodu.<\/p>\n<h2>Wi\u0119cej w przysz\u0142o\u015bci<\/h2>\n<p>Pod koniec serii opowiem, jak w\u0142\u0105czy\u0107 je wszystkie do <code>composer.json<\/code>pliku, kt\u00f3rego mo\u017cesz u\u017cy\u0107 w swoim projekcie.<\/p>\n<p>Kiedy pracujesz nad rozwi\u0105zaniem dla klienta, by\u0107 mo\u017ce b\u0119dziesz musia\u0142 zmieni\u0107 wersje ka\u017cdego z tych narz\u0119dzi, ale przekonasz si\u0119, \u017ce wi\u0119kszo\u015b\u0107 z nich oferuje wsparcie od PHP5.6 a\u017c do PHP7.1.<\/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>Pierwszy post z serii o bibliotekach wtyczek do WordPressa, z kt\u00f3rych m\u00f3j zesp\u00f3\u0142 i ja korzystamy podczas pracy nad wysokiej jako\u015bci rozwi\u0105zaniami dla innych.<\/p>\n","protected":false},"author":1,"featured_media":166076,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,919,1020,866],"tags":[1169],"class_list":["post-229113","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-przydatne-strony","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229113","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=229113"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229113\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/166076"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}