{"id":229142,"date":"2022-11-11T10:29:00","date_gmt":"2022-11-11T07:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229142"},"modified":"2022-11-09T05:42:06","modified_gmt":"2022-11-09T02:42:06","slug":"kompozytor-dla-wordpressa-czesc-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/kompozytor-dla-wordpressa-czesc-1\/","title":{"rendered":"Kompozytor dla WordPressa, cz\u0119\u015b\u0107 1"},"content":{"rendered":"\n<p>Ok, wi\u0119c po om\u00f3wieniu wszystkich r\u00f3\u017cnych bibliotek, kt\u00f3re mog\u0105 pom\u00f3c poprawi\u0107 jako\u015b\u0107 kodu Twojej pracy, wci\u0105\u017c pojawia si\u0119 pytanie:<\/p>\n<p>Jak sprawi\u0107, by te projekty dzia\u0142a\u0142y z nasz\u0105 baz\u0105 kodu?<\/p>\n<p>Kr\u00f3tko m\u00f3wi\u0105c, wymaga <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Je\u015bli nigdy go nie u\u017cywa\u0142e\u015b, <a href=\"https:\/\/tommcfarlin.com\/setting-php-and-composer-in-mamp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pisa\u0142em o tym wcze\u015bniej kr\u00f3tko<\/a>, ale zamierzam przedstawi\u0107 podstawy tego, czego potrzebujesz, aby zacz\u0105\u0107 z niego korzysta\u0107 oraz wspomniane biblioteki w swojej pracy.<\/p>\n<p>W tym i nast\u0119pnym po\u015bcie opowiem, jak skonfigurowa\u0107 wszystko lokalnie w najbardziej podstawowej formie, a nast\u0119pnie jak integruje si\u0119 z Git, aby\u015b m\u00f3g\u0142 zacz\u0105\u0107 z niego korzysta\u0107 na co dzie\u0144.<\/p>\n<h2>Konfiguracja Composera dla WordPress<\/h2>\n<p>Istnieje wiele informacji, kt\u00f3re mog\u0105 (i argumentuj\u0119, \u017ce powinny znale\u017a\u0107 si\u0119 w pliku dla Composera). Obejmuje to takie rzeczy, jak informacje o autorze, PSR, informacje itp. Ale to naprawd\u0119 wykracza poza zakres tego postu. Zamiast tego chc\u0119 podzieli\u0107 si\u0119 niezb\u0119dnym minimum niezb\u0119dnym do uzyskania konfiguracji i konfiguracji tych informacji.<\/p>\n<h3>Przyk\u0142adowy katalog<\/h3>\n<p>Za\u0142\u00f3\u017cmy, \u017ce na chwil\u0119 rozpoczniesz prac\u0119 nad wtyczk\u0105 lub czym\u015b zwi\u0105zanym z WordPressem, kt\u00f3ry b\u0119dzie wymaga\u0142 r\u00f3\u017cnych bibliotek om\u00f3wionych w poprzedniej serii. A kiedy konfigurujesz katalog do tego, b\u0119dziesz mie\u0107 bardzo ma\u0142o plik\u00f3w. Mo\u017ce kilka pustych plik\u00f3w PHP, zasob\u00f3w itp. By\u0107 mo\u017ce b\u0119dzie to wygl\u0105da\u0107 tak:<\/p>\n<p>To prawda, powy\u017cszy przyk\u0142ad ju\u017c nieco wyprzedza to, jak mo\u017ce wygl\u0105da\u0107 Twoja praca, poniewa\u017c:<\/p>\n<ul>\n<li>Jest <code>composer.lock<\/code>\u00a0plik pokazuj\u0105cy, \u017ce Composer zosta\u0142 uruchomiony,<\/li>\n<li>Posiada <code>vendor<\/code>\u00a0katalog, kt\u00f3ry pokazuje, \u017ce biblioteki zosta\u0142y zainstalowane przez Composer,<\/li>\n<li>Istnieje <code>grumphp.yml<\/code>\u00a0plik, kt\u00f3ry definiuje, jak GrumPHP powinien dzia\u0142a\u0107 (om\u00f3wi\u0119 to p\u00f3\u017aniej) podczas sniffowania kodu.<\/li>\n<\/ul>\n<p>Ale sedno powy\u017cszego jest takie samo: masz <code>composer.json<\/code>i definiuje i zawiera wszystko, czego potrzebujemy na podstawie poprzedniego postu. Wi\u0119c jak to ustawimy?<\/p>\n<h3>Konfigurowanie kompozytora<\/h3>\n<p>Po pierwsze, musisz mie\u0107 pomys\u0142 na to, jak zamierzasz ustrukturyzowa\u0107 swoj\u0105 wtyczk\u0119. Na przyk\u0142ad mam tak\u0105 konfiguracj\u0119 wtyczki:<\/p>\n<ul>\n<li>Wszystkie pliki PHP znajduj\u0105 si\u0119 w <code>src<\/code>\u00a0katalogu,<\/li>\n<li>Wszystkie pliki CSS, JavaScript, obrazy itp. znajduj\u0105 si\u0119 w <code>assets<\/code>\u00a0katalogu,<\/li>\n<li>Katalog <code>vendor<\/code>\u00a0jest przeznaczony na rzeczy, kt\u00f3re s\u0105 instalowane przez Composer,<\/li>\n<li><code>views<\/code>\u00a0jest to, co jest u\u017cywane w interfejsie projektu.<\/li>\n<\/ul>\n<p>Na przyk\u0142ad:<\/p>\n<\/p>\n<p>Po drugie, w katalogu, o kt\u00f3rym mowa, b\u0119dziesz chcia\u0142 utworzy\u0107 plik o nazwie <code>composer.json<\/code>. Mo\u017cna to zrobi\u0107 za pomoc\u0105 Terminala, wydaj\u0105c <code>touch<\/code>\u00a0polecenie lub mo\u017cesz je utworzy\u0107 w swoim IDE.<\/p>\n<p>Wa\u017cn\u0105 rzecz\u0105, kt\u00f3r\u0105 nale\u017cy z tego wyci\u0105gn\u0105\u0107, jest to, \u017ce istnieje <code>src<\/code>\u00a0katalog, poniewa\u017c jest to katalog, kt\u00f3ry zawiera nasze pliki PHP i jest to katalog, kt\u00f3ry chcemy przeszuka\u0107.<\/p>\n<h3>Podstawowy plik kompozytora<\/h3>\n<p>Maj\u0105c to na uwadze, oto podstawowy <code>composer.json<\/code>plik, kt\u00f3rego mo\u017cesz u\u017cy\u0107 w swoich projektach na podstawie poprzedniej serii i na podstawie tego, co <a href=\"https:\/\/gist.github.com\/tommcfarlin\/60ac0e1fba9fa152fc57622e3866d6dc\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">udost\u0119pniono<\/a> poni\u017cej:<\/p>\n<pre><code>{\n  \"name\": \"pressware\/demo-wordpress-plugin\",\n  \"description\": \"This file is used to show how to configure a WordPress plugin using Composer.\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Pressware\": \"src\/\"\n    }\n  },\n  \"require-dev\": {\n    \"phpro\/grumphp\": \"^0.11.6\",\n    \"phpmd\/phpmd\": \"^2.6\",\n    \"phpunit\/phpunit\": \"5.7.21\",\n    \"nikic\/php-parser\": \"^3.0\",\n    \"sebastian\/phpcpd\": \"^3.0\",\n    \"povils\/phpmnd\": \"^1.1\",\n    \"squizlabs\/php_codesniffer\": \"^3.0\",\n    \"jakub-onderka\/php-parallel-lint\": \"^0.9.2\",\n    \"sensiolabs\/security-checker\": \"^4.0\"\n  }\n}<\/code><\/pre>\n<p>Patrz\u0105c na powy\u017cszy plik, oto jak go przeanalizowa\u0107:<\/p>\n<ol>\n<li>Wiersze 2 i 3 zawieraj\u0105 kr\u00f3tki opis tego, o co chodzi we wtyczce. To s\u0105 r\u00f3wnie\u017c inne obszary w tym pliku, kt\u00f3re zawieraj\u0105 wi\u0119cej informacji o tym, co nale\u017cy zrobi\u0107.<\/li>\n<li>Wiersze od 4 do 8 s\u0105 wa\u017cne, poniewa\u017c wyja\u015bniaj\u0105, \u017ce u\u017cywamy <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> do automatycznego \u0142adowania i \u017ce wszystkie pliki nale\u017c\u0105 do przestrzeni nazw najwy\u017cszego poziomu <code>Pressware<\/code>oraz \u017ce pliki PHP znajduj\u0105 si\u0119 w <code>src<\/code>\u00a0katalogu.<\/li>\n<li>Wiersze od 9 do 18 obejmuj\u0105 wszystkie pliki opisane w poprzedniej serii.<\/li>\n<\/ol>\n<p>Nast\u0119pnie wydaj nast\u0119puj\u0105ce polecenie w swoim terminalu:<\/p>\n<p><code>$ composer install<\/code><\/p>\n<p>A to zainstaluje te pakiety.<\/p>\n<h2>A co z zobowi\u0105zaniami?<\/h2>\n<p>Aby upewni\u0107 si\u0119, \u017ce prawid\u0142owo pods\u0142uchujesz i obs\u0142ugujesz zatwierdzenia, wa\u017cne jest, aby skonfigurowa\u0107 GrumPHP tak, aby obserwowa\u0142 pliki. Ale przyjrz\u0119 si\u0119 temu w nast\u0119pnym po\u015bcie.<\/p>\n<p>W mi\u0119dzyczasie by\u0107 mo\u017ce jest to dobra okazja do skonfigurowania wtyczki demonstracyjnej i prze\u0107wiczenia powy\u017cszego kodu. Odpowiednia konfiguracja za pierwszym razem mo\u017ce by\u0107 trudna. Na szcz\u0119\u015bcie wiele b\u0142\u0119d\u00f3w wyj\u015bciowych jest naprawd\u0119 \u0142atwych do zrozumienia, wi\u0119c ich rozwi\u0105zanie jest stosunkowo proste.<\/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>Jest to pierwszy z dwucz\u0119\u015bciowej serii o tym, jak skonfigurowa\u0107 Composer do programowania w WordPressie, aby\u015b m\u00f3g\u0142 pisa\u0107 kod wy\u017cszej jako\u015bci w swojej pracy).<\/p>\n","protected":false},"author":1,"featured_media":166003,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,752,1020],"tags":[1169],"class_list":["post-229142","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-otwarte-zrodlo","category-przydatne-strony","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229142","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=229142"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229142\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/166003"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}