{"id":229122,"date":"2022-11-10T13:25:00","date_gmt":"2022-11-10T10:25:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229122"},"modified":"2022-11-10T13:42:15","modified_gmt":"2022-11-10T10:42:15","slug":"biblioteki-dla-wtyczek-wordpress-czesc-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/biblioteki-dla-wtyczek-wordpress-czesc-2\/","title":{"rendered":"Biblioteki dla wtyczek WordPress, cz\u0119\u015b\u0107 2"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/biblioteki-dla-wtyczek-wordpress-czesc-1\/\" title=\"Wczoraj\">Wczoraj<\/a> rozpocz\u0105\u0142em kr\u00f3tk\u0105 seri\u0119 wpis\u00f3w dotycz\u0105cych narz\u0119dzi, kt\u00f3re moim zdaniem s\u0142u\u017c\u0105 do pisania wysokiej jako\u015bci kodu w projekcie WordPress (w szczeg\u00f3lno\u015bci te, kt\u00f3re s\u0105 wtyczkami zbudowanymi przy u\u017cyciu podej\u015bcia obiektowego).<\/p>\n<p>Je\u015bli nie przeczyta\u0142e\u015b posta, pierwszy zestaw wymienionych narz\u0119dzi jest nast\u0119puj\u0105cy:<\/p>\n<ul>\n<li><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jednostka PHP<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/li>\n<li><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a><\/li>\n<\/ul>\n<p>Jest jeszcze oko\u0142o pi\u0119ciu innych narz\u0119dzi, kt\u00f3re lubi\u0119 u\u017cywa\u0107 w swoich projektach. Oto kolejne trzy, a ostatnie dwa pojawi\u0105 si\u0119 w nast\u0119pnym po\u015bcie.<\/p>\n<h2>Biblioteki dla wtyczek WordPress, ci\u0105g dalszy<\/h2>\n<p>Jak wcze\u015bniej wspomnia\u0142em, narz\u0119dzia te s\u0105 dla mnie przydatne, gdy pracuj\u0119 nad obiektowymi wtyczkami do WordPressa. Co wi\u0119cej, s\u0105 one naturalnie roz\u0142o\u017cone na kilka post\u00f3w, aby ka\u017cdy z nich by\u0142 kr\u00f3tki i skoncentrowany.<\/p>\n<h3><a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CodeSniffer<\/a><\/h3>\n<p>Je\u015bli czytasz tego bloga przez d\u0142u\u017cszy czas, prawdopodobnie przeczyta\u0142e\u015b post lub przynajmniej wspomnia\u0142e\u015b co\u015b o <a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CodeSniffer<\/a>. To jest co\u015b, co my\u015bl\u0119, \u017ce ka\u017cdy programista WordPress powinien zainstalowa\u0107 w swoim IDE.<\/p>\n<p>Ze strony repozytorium projektu:<\/p>\n<blockquote>\n<p>PHP_CodeSniffer tokenizuje pliki PHP, JavaScript i CSS oraz wykrywa naruszenia okre\u015blonego zestawu standard\u00f3w kodowania.<\/p>\n<\/blockquote>\n<p>Teraz, je\u015bli chodzi o zasady, to inna sprawa. Niekt\u00f3rzy wol\u0105 <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Coding Standards<\/a> ; niekt\u00f3rzy wol\u0105 <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/korzystanie-z-psr-w-porownaniu-ze-standardami-kodowania-wordpress\/\" title=\"PSR2\">PSR2<\/a>, inni wol\u0105 inne zestawy regu\u0142. Nie chodzi o to, co wolisz, o ile Ty lub Tw\u00f3j zesp\u00f3\u0142 jeste\u015bcie konsekwentni.<\/p>\n<p>I w tym w\u0142a\u015bnie pomaga ta konkretna biblioteka. Dodatkowo nie zaszkodzi, \u017ce mo\u017cesz zintegrowa\u0107 si\u0119 ze swoim IDE (zak\u0142adaj\u0105c, \u017ce jest to jeden z bardziej popularnych edytor\u00f3w).<\/p>\n<h3><a href=\"https:\/\/github.com\/sebastianbergmann\/phpcpd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPCPD<\/a><\/h3>\n<p>PHPCPD to prosta biblioteka, kt\u00f3ra analizuje tw\u00f3j kod w celu wykrycia zduplikowanego kodu \u2013 kt\u00f3ry zwykle pochodzi z kopiowania i wklejania z innego miejsca (nawet je\u015bli jest to twoja baza kodu). Ide\u0105 biblioteki jest redukcja duplikat\u00f3w kodu.<\/p>\n<\/p>\n<p>I nie jest to du\u017co ja\u015bniejsze <a href=\"https:\/\/github.com\/sebastianbergmann\/phpcpd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ni\u017c to<\/a> :<\/p>\n<blockquote>\n<p>phpcpd to wykrywacz kopiowania\/wklejania (CPD) kodu PHP.<\/p>\n<\/blockquote>\n<p>Innymi s\u0142owy, jest to jeden krok, aby pom\u00f3c Ci utrzyma\u0107 go w stanie suchym.<\/p>\n<h3><a href=\"https:\/\/github.com\/povils\/phpmnd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMND<\/a><\/h3>\n<p>Je\u015bli jednym z cel\u00f3w, do kt\u00f3rych d\u0105\u017cymy w naszym kodzie, jest uczynienie go jak najbardziej czytelnym dla innych, kt\u00f3rzy mog\u0105 posi\u0105\u015b\u0107 baz\u0119 kodu, rozwidli\u0107 j\u0105 lub wnie\u015b\u0107 do niej sw\u00f3j wk\u0142ad (zw\u0142aszcza w przypadku open source), musimy upewni\u0107 si\u0119, \u017ce wszystkie naszych warto\u015bci maj\u0105 warto\u015bci znacz\u0105ce.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166044-61e78d8e8d7a0.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-166044-61e78d8e8d7a0.png\" alt=\"Biblioteki dla wtyczek WordPress, cz\u0119\u015b\u0107 2\"><\/a><\/p>\n<p>U\u017cywanie liczb, kt\u00f3re maj\u0105 dla nas znaczenie, ale nie opisuj\u0105, co robi kod, jest wa\u017cne, ale nie jest to co\u015b, co robimy, prawda? A mo\u017ce to tylko ja.<\/p>\n<p>Ale tu w\u0142a\u015bnie pojawia si\u0119 <a href=\"https:\/\/github.com\/povils\/phpmnd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMND<\/a>.<\/p>\n<blockquote>\n<p>phpmnd to narz\u0119dzie, kt\u00f3re pomaga wykrywa\u0107 magiczne liczby w kodzie PHP. Domy\u015blnie 0 i 1 nie s\u0105 uwa\u017cane za liczby magiczne.<\/p>\n<\/blockquote>\n<p>Jest to prosta biblioteka, ale u\u017cywana w po\u0142\u0105czeniu z bibliotekami w tym po\u015bcie, a poprzedni wpis mo\u017ce pom\u00f3c w ci\u0105g\u0142ym podnoszeniu jako\u015bci kodu, kt\u00f3ry wnosisz do swoich repozytori\u00f3w.<\/p>\n<h2>Jeszcze jeden zestaw narz\u0119dzi<\/h2>\n<p>Jak wspomniano w poprzednim po\u015bcie, celem, nad kt\u00f3rym pracuj\u0119, jest w\u0142\u0105czenie ich wszystkich do <code>composer.json<\/code>pliku, kt\u00f3rego mo\u017cna u\u017cy\u0107 w swoim projekcie.<\/p>\n<p>Pami\u0119taj te\u017c, \u017ce w zale\u017cno\u015bci od projektu mo\u017ce by\u0107 konieczne wybranie wersji biblioteki na podstawie u\u017cywanej wersji PHP.<\/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>Drugi 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":166045,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,1020],"tags":[1169],"class_list":["post-229122","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-przydatne-strony","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229122","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=229122"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229122\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/166045"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}