{"id":27312,"date":"2021-05-12T10:07:00","date_gmt":"2021-05-12T07:07:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27312"},"modified":"2021-10-18T04:15:07","modified_gmt":"2021-10-18T01:15:07","slug":"melhore-seus-padroes-de-codificacao-do-laravel-usando-grumphp","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/melhore-seus-padroes-de-codificacao-do-laravel-usando-grumphp\/","title":{"rendered":"Melhore seus padr\u00f5es de codifica\u00e7\u00e3o do Laravel usando GrumPHP"},"content":{"rendered":"<p>N\u00e3o importa se voc\u00ea \u00e9 um desenvolvedor experiente ou novato, voc\u00ea deve melhorar seus padr\u00f5es de codifica\u00e7\u00e3o para se tornar um desenvolvedor melhor. Quer voc\u00ea esteja trabalhando sozinho ou em equipe, \u00e9 sempre uma boa pr\u00e1tica ter as mesmas conven\u00e7\u00f5es de codifica\u00e7\u00e3o em todo o projeto. Mas manter os mesmos padr\u00f5es em todos os lugares n\u00e3o \u00e9 f\u00e1cil se estivermos verificando manualmente. Pode acontecer de voc\u00ea ter perdido o padr\u00e3o, mesmo que decida segui-lo. \u00c9 um erro humano, \u00e0s vezes perdemos coisas que n\u00e3o dever\u00edamos. Para evitar esses problemas, devemos automatizar nosso fluxo de trabalho. Fazendo isso, nosso sistema automatizado cuidar\u00e1 da tarefa que lhe atribu\u00edmos e em 99,99% das vezes nunca falha.<\/p>\n<p><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a> \u00e9 uma biblioteca que fica de olho em cada commit do git. Se o seu c\u00f3digo n\u00e3o segue os padr\u00f5es fornecidos, a biblioteca n\u00e3o permite que voc\u00ea confirme o c\u00f3digo. Voc\u00ea deve corrigir seu c\u00f3digo primeiro e s\u00f3 ent\u00e3o voc\u00ea pode se comprometer com o Git.<\/p>\n<p>Soa bem? Vamos ver em a\u00e7\u00e3o.<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Como estamos falando sobre os padr\u00f5es de codifica\u00e7\u00e3o do Laravel, voc\u00ea deve ter uma configura\u00e7\u00e3o de projeto do Laravel. Se voc\u00ea n\u00e3o tiver, instale-o pelo comando:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel laravel-dev<\/code><\/pre>\n<p>Aqui, &#8216;laravel-dev&#8217; \u00e9 o nome do seu projeto. Abra o terminal no diret\u00f3rio raiz do seu projeto e inicialize o git.<\/p>\n<pre><code>git init<\/code><\/pre>\n<p>\u00c9 obrigat\u00f3rio ter Git em seu projeto para aproveitar as vantagens do GrumPHP. \u00c9 aqui que funciona. Quando instalamos o GrumPHP, ele cria um gancho dentro da <code>.git<\/code>pasta e, em seguida, vigia cada commit.<\/p>\n<p>Agora, adicione e envie seus arquivos atuais para o git usando os comandos abaixo um por um.<\/p>\n<pre><code>git add -A<\/code><\/pre>\n<pre><code>git commit -m 'initial commit'<\/code><\/pre>\n<h3>Melhore o padr\u00e3o de codifica\u00e7\u00e3o do Laravel usando GrumPHP<\/h3>\n<p>Assim que tivermos configurado o git em nosso projeto Laravel, estamos prontos para instalar a biblioteca GrumPHP. Para instal\u00e1-lo, execute o comando abaixo:<\/p>\n<pre><code>composer require --dev phpro\/grumphp<\/code><\/pre>\n<p>Assim que o pacote for instalado, voc\u00ea dever\u00e1 ver a mensagem abaixo no terminal:<\/p>\n<p>Aten\u00e7\u00e3o! GrumPHP est\u00e1 farejando seus commits!<\/p>\n<p>Isso significa que o pacote foi instalado com sucesso. Em seguida, abra o <code>grumphp.yml<\/code>arquivo e adicione o c\u00f3digo abaixo nele.<\/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>No c\u00f3digo acima, a parte importante \u00e9 a linha <code>standard: PSR2<\/code>. Aqui, estamos dizendo ao GrumPHP para verificar as conven\u00e7\u00f5es de codifica\u00e7\u00e3o do PSR2 em rela\u00e7\u00e3o aos arquivos que ser\u00e3o confirmados. Usamos PSR2 aqui porque o Laravel segue os padr\u00f5es de codifica\u00e7\u00e3o PSR2. Depois disso, o GrumPHP iria realizar sua tarefa e nos informar sobre o erro em um console se encontrado.<\/p>\n<p>Se voc\u00ea n\u00e3o instalou a biblioteca padr\u00e3o de codifica\u00e7\u00e3o, execute o comando abaixo para instal\u00e1-la:<\/p>\n<pre><code>composer require \"squizlabs\/php_codesniffer=*\"<\/code><\/pre>\n<p>Esta biblioteca possui padr\u00f5es de codifica\u00e7\u00e3o PSR2 inclu\u00eddos em seu n\u00facleo. Ent\u00e3o, GrumPHP ir\u00e1 verificar seu c\u00f3digo Laravel contra o PSR2 e sugerir mudan\u00e7as se voc\u00ea n\u00e3o estiver seguindo os padr\u00f5es PSR2.<\/p>\n<p>Digamos que temos um <code>ImageController.php<\/code>arquivo em nosso projeto e o seguinte trecho de c\u00f3digo nele.<\/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>Em seguida, tente confirmar o c\u00f3digo acima e voc\u00ea dever\u00e1 ver uma sa\u00edda semelhante a abaixo:<\/p>\n<p>Ele fornece o erro de codifica\u00e7\u00e3o em detalhes, juntamente com o n\u00famero da linha e a descri\u00e7\u00e3o. Voc\u00ea tamb\u00e9m pode notar a linha:<\/p>\n<p>PHPCBF PODE FIXAR AS 2 VIOLA\u00c7\u00d5ES DE SNIFF MARCADAS AUTOMATICAMENTE<\/p>\n<h3>Como usar o comando PHPCBF<\/h3>\n<p>Ao executar um comando PHPCBF, podemos corrigir alguns erros automaticamente. V\u00e1 para o diret\u00f3rio &#8216;vendor \/ bin&#8217; do terminal e execute o comando abaixo para corrigir os erros usando PHPCBF.<\/p>\n<pre><code>PHPCBF --standard=PSR2 PATH_TO_YOUR_CONTROLLER<\/code><\/pre>\n<p>Substitua o marcador pelos valores reais. Provavelmente, se voc\u00ea estiver executando este comando no Git bash, obter\u00e1 o erro &#8216;bash: phpcbf: command not found&#8217;. Nesse caso, execute este comando no prompt de comando do Windows. Em nosso caso, vemos a seguinte sa\u00edda no terminal.<\/p>\n<p>Observe que nem todos os erros s\u00e3o resolvidos por PHPCBH. \u00c0s vezes, voc\u00ea tamb\u00e9m precisa resolver o erro manualmente. Agora, quando voc\u00ea tenta confirmar o c\u00f3digo, deve obter a mensagem de sucesso e o c\u00f3digo tamb\u00e9m \u00e9 confirmado.<\/p>\n<h3>Pensamentos finais<\/h3>\n<p>Neste tutorial, discutimos como melhorar os padr\u00f5es de codifica\u00e7\u00e3o do Laravel usando o GrumPHP. Mas n\u00e3o se limita apenas ao Laravel. Voc\u00ea tamb\u00e9m pode usar esta biblioteca em seus outros CMS, Frameworks. Estamos usando a biblioteca GrumPHP para nossos projetos Laravel, WordPress e PHP. Isso realmente nos ajuda a manter nosso estilo de codifica\u00e7\u00e3o de forma consistente.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/php_codesniffer-uma-biblioteca-para-melhorar-seus-padroes-de-codificacao-php\/\" title=\"PHP_CodeSniffer - uma biblioteca para melhorar seus padr\u00f5es de codifica\u00e7\u00e3o PHP\">PHP_CodeSniffer &#8211; uma biblioteca para melhorar seus padr\u00f5es de codifica\u00e7\u00e3o PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/um-guia-sobre-como-melhorar-os-padroes-de-codificacao-do-wordpress\/\" title=\"Um guia sobre como melhorar os padr\u00f5es de codifica\u00e7\u00e3o do WordPress\">Um guia sobre como melhorar os padr\u00f5es de codifica\u00e7\u00e3o do WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <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 \u00e9 uma biblioteca que nos ajuda a melhorar os padr\u00f5es de codifica\u00e7\u00e3o do Laravel. Ele apenas verifica cada commit do Git e encontra qualquer erro, em seguida, falha no commit.<\/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":[502],"tags":[848],"class_list":["post-27312","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27312"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27312\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/20640"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}