{"id":27642,"date":"2021-05-12T10:16:00","date_gmt":"2021-05-12T07:16:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27642"},"modified":"2021-10-18T03:47:50","modified_gmt":"2021-10-18T00:47:50","slug":"popraw-swoje-standardy-kodowania-laravel-za-pomoca-grumphp","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/popraw-swoje-standardy-kodowania-laravel-za-pomoca-grumphp\/","title":{"rendered":"Popraw swoje standardy kodowania Laravel za pomoc\u0105 GrumPHP"},"content":{"rendered":"<p>Bez wzgl\u0119du na to, czy jeste\u015b do\u015bwiadczonym programist\u0105, czy nowicjuszem, powiniene\u015b poprawi\u0107 swoje standardy kodowania, aby sta\u0107 si\u0119 lepszym programist\u0105. Niezale\u017cnie od tego, czy pracujesz sam, czy z zespo\u0142em, zawsze dobr\u0105 praktyk\u0105 jest stosowanie tych samych konwencji kodowania w ca\u0142ym projekcie. Ale utrzymanie tych samych standard\u00f3w we wszystkich miejscach nie jest \u0142atwe, je\u015bli sprawdzamy to r\u0119cznie. Mo\u017ce si\u0119 zdarzy\u0107, \u017ce przegapi\u0142e\u015b standard, nawet je\u015bli zdecydowa\u0142e\u015b si\u0119 go przestrzega\u0107. To ludzki b\u0142\u0105d, czasami przeoczyli\u015bmy rzeczy, kt\u00f3rych nie powinni\u015bmy. Aby zapobiec takim problemom, powinni\u015bmy zautomatyzowa\u0107 nasz przep\u0142yw pracy. W ten spos\u00f3b nasz zautomatyzowany system zajmie si\u0119 zadaniem, kt\u00f3re mu przydzielili\u015bmy i przez 99,99% czasu nigdy nie zawodzi.<\/p>\n<p><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a> to biblioteka, kt\u00f3ra <a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kontroluje<\/a> ka\u017cdy Tw\u00f3j git commit. Je\u015bli tw\u00f3j kod nie jest zgodny z okre\u015blonymi standardami, biblioteka nie pozwala na zatwierdzenie kodu. Powiniene\u015b najpierw naprawi\u0107 sw\u00f3j kod, a dopiero potem mo\u017cesz zatwierdzi\u0107 Git.<\/p>\n<p>Brzmi dobrze? Zobaczmy to w akcji.<\/p>\n<h3>Pierwsze kroki<\/h3>\n<p>Poniewa\u017c m\u00f3wimy o standardach kodowania Laravel, powiniene\u015b mie\u0107 konfiguracj\u0119 projektu Laravel. Je\u015bli go nie masz, zainstaluj go za pomoc\u0105 polecenia:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel laravel-dev<\/code><\/pre>\n<p>Tutaj 'laravel-dev&#8217; to nazwa twojego projektu. Otw\u00f3rz terminal w katalogu g\u0142\u00f3wnym projektu i zainicjuj git.<\/p>\n<pre><code>git init<\/code><\/pre>\n<p>Aby korzysta\u0107 z GrumPHP, musisz mie\u0107 Git w swoim projekcie. Tutaj to dzia\u0142a. Kiedy instalujemy GrumPHP, tworzy on podpi\u0119cie w <code>.git<\/code>folderze, a nast\u0119pnie obserwuje ka\u017cde zatwierdzenie.<\/p>\n<p>Teraz dodaj i zatwierd\u017a swoje bie\u017c\u0105ce pliki w git za pomoc\u0105 poni\u017cszych polece\u0144 jeden po drugim.<\/p>\n<pre><code>git add -A<\/code><\/pre>\n<pre><code>git commit -m 'initial commit'<\/code><\/pre>\n<h3>Popraw standard kodowania Laravel za pomoc\u0105 GrumPHP<\/h3>\n<p>Po skonfigurowaniu git w naszym projekcie Laravel mo\u017cemy rozpocz\u0105\u0107 instalacj\u0119 biblioteki GrumPHP. Aby go zainstalowa\u0107, uruchom poni\u017csze polecenie:<\/p>\n<pre><code>composer require --dev phpro\/grumphp<\/code><\/pre>\n<p>Po zainstalowaniu pakietu powiniene\u015b zobaczy\u0107 poni\u017cszy komunikat w terminalu:<\/p>\n<p>Uwa\u017caj! GrumPHP sniffuje twoje commity!<\/p>\n<p>Oznacza to, \u017ce pakiet zosta\u0142 pomy\u015blnie zainstalowany. Nast\u0119pnie otw\u00f3rz <code>grumphp.yml<\/code>plik i dodaj do niego poni\u017cszy kod.<\/p>\n<pre><code>parameters:\n\u00a0\u00a0\u00a0\u00a0git_dir:. \u00a0\u00a0\u00a0\u00a0bin_dir: vendor\/bin\n\u00a0\u00a0\u00a0\u00a0tasks: { \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0phpcs: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0standard: PSR2\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0}<\/code><\/pre>\n<p>W powy\u017cszym kodzie wa\u017cn\u0105 cz\u0119\u015bci\u0105 jest linia <code>standard: PSR2<\/code>. Tutaj m\u00f3wimy GrumPHP, aby sprawdzi\u0142 konwencje kodowania PSR2 z plikami, kt\u00f3re maj\u0105 zosta\u0107 zatwierdzone. U\u017cyli\u015bmy tutaj PSR2, poniewa\u017c Laravel przestrzega standard\u00f3w kodowania PSR2. Nast\u0119pnie GrumPHP wykona swoje zadanie i poinformuje nas o b\u0142\u0119dzie w konsoli, je\u015bli zostanie znaleziony.<\/p>\n<p>Je\u015bli nie zainstalowa\u0142e\u015b standardowej biblioteki kodowania, uruchom poni\u017csze polecenie, aby j\u0105 zainstalowa\u0107:<\/p>\n<pre><code>composer require \"squizlabs\/php_codesniffer=*\"<\/code><\/pre>\n<p>Ta biblioteka zawiera standardy kodowania PSR2 zawarte w jej rdzeniu. Tak wi\u0119c GrumPHP sprawdzi tw\u00f3j kod Laravela wzgl\u0119dem PSR2 i zasugeruje zmiany, je\u015bli nie przestrzegasz standard\u00f3w PSR2.<\/p>\n<p>Za\u0142\u00f3\u017cmy, \u017ce mamy <code>ImageController.php<\/code>plik w naszym projekcie i mamy w nim nast\u0119puj\u0105cy fragment kodu.<\/p>\n<pre><code>public function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if($request-&gt;hasFile('profile_image')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $request-&gt;file('profile_image')-&gt;getClientOriginalName();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $request-&gt;file('profile_image')-&gt;getClientOriginalExtension();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.time().'.'.$extension;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Upload File\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images', $filenametostore);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!file_exists(public_path('storage\/profile_images\/crop'))) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(public_path('storage\/profile_images\/crop'), 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ crop image\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make(public_path('storage\/profile_images\/'.$filenametostore));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$croppath = public_path('storage\/profile_images\/crop\/'.$filenametostore);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;crop($request-&gt;input('w'), $request-&gt;input('h'), $request-&gt;input('x1'), $request-&gt;input('y1'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($croppath);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ you can save crop image path below in database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$path = asset('storage\/profile_images\/crop\/'.$filenametostore);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('image')-&gt;with(['success' =&gt; \"Image cropped successfully.\", 'path' =&gt; $path]);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Nast\u0119pnie spr\u00f3buj zatwierdzi\u0107 powy\u017cszy kod i powiniene\u015b zobaczy\u0107 co\u015b takiego jak poni\u017cej:<\/p>\n<p>Podaje szczeg\u00f3\u0142owo b\u0142\u0105d kodowania wraz z numerem linii i opisem. Mo\u017cesz r\u00f3wnie\u017c zauwa\u017cy\u0107 lini\u0119:<\/p>\n<p>PHPCBF MO\u017bE AUTOMATYCZNIE NAPRAWI\u0106 2 ZAZNACZONE NARUSZENIA SNIFF<\/p>\n<h3>Jak korzysta\u0107 z polecenia PHPCBF<\/h3>\n<p>Uruchamiaj\u0105c polecenie PHPCBF mo\u017cemy automatycznie naprawi\u0107 niekt\u00f3re b\u0142\u0119dy. Udaj si\u0119 do katalogu \u201evendor\/bin&quot; z terminala i uruchom poni\u017csze polecenie, aby naprawi\u0107 b\u0142\u0119dy za pomoc\u0105 PHPCBF.<\/p>\n<pre><code>PHPCBF --standard=PSR2 PATH_TO_YOUR_CONTROLLER<\/code><\/pre>\n<p>Zast\u0105p symbol zast\u0119pczy rzeczywistymi warto\u015bciami. Prawdopodobnie, je\u015bli uruchomisz to polecenie w Git bash, pojawi si\u0119 b\u0142\u0105d \u201ebash: phpcbf: nie znaleziono polecenia&#8221;. W takim przypadku uruchom to polecenie w wierszu polece\u0144 systemu Windows. W naszym przypadku widzimy nast\u0119puj\u0105ce dane wyj\u015bciowe na terminalu.<\/p>\n<p>Pami\u0119taj, \u017ce nie wszystkie b\u0142\u0119dy s\u0105 rozwi\u0105zywane przez PHPCBH. Czasami trzeba r\u00f3wnie\u017c rozwi\u0105za\u0107 b\u0142\u0105d r\u0119cznie. Teraz, gdy pr\u00f3bujesz zatwierdzi\u0107 kod, powiniene\u015b otrzyma\u0107 komunikat o powodzeniu, a kod r\u00f3wnie\u017c zostanie zatwierdzony.<\/p>\n<h3>Ko\u0144cowe przemy\u015blenia<\/h3>\n<p>W tym samouczku om\u00f3wili\u015bmy ulepszanie standard\u00f3w kodowania Laravela za pomoc\u0105 GrumPHP. Ale to nie ogranicza si\u0119 tylko do Laravela. Mo\u017cesz r\u00f3wnie\u017c u\u017cy\u0107 tej biblioteki w innych CMS, Frameworkach. U\u017cywamy biblioteki GrumPHP do naszych projekt\u00f3w Laravel, WordPress i podstawowych projekt\u00f3w PHP. To naprawd\u0119 pomaga nam konsekwentnie utrzymywa\u0107 nasz styl kodowania.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/php_codesniffer-biblioteka-do-ulepszania-standardow-kodowania-php\/\" title=\"PHP_CodeSniffer \u2013 Biblioteka do ulepszania standard\u00f3w kodowania PHP\">PHP_CodeSniffer \u2013 Biblioteka do ulepszania standard\u00f3w kodowania PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przewodnik-po-tym-jak-ulepszyc-standardy-kodowania-wordpress\/\" title=\"Przewodnik po tym, jak ulepszy\u0107 standardy kodowania WordPress\">Przewodnik po tym, jak ulepszy\u0107 standardy kodowania WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GrumPHP to biblioteka, kt\u00f3ra pomaga nam ulepsza\u0107 standardy kodowania Laravela. Po prostu sprawdza ka\u017cde zatwierdzenie Git i znajduje b\u0142\u0105d, a nast\u0119pnie zatwierdzenie ko\u0144czy si\u0119 niepowodzeniem.<\/p>\n","protected":false},"author":1,"featured_media":20640,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[501],"tags":[847],"class_list":["post-27642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27642"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27642\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20640"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}