{"id":24129,"date":"2021-05-12T09:42:00","date_gmt":"2021-05-12T06:42:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24129"},"modified":"2021-10-17T21:04:24","modified_gmt":"2021-10-17T18:04:24","slug":"paranna-laravel-koodausstandardejasi-grumphp-n-avulla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/paranna-laravel-koodausstandardejasi-grumphp-n-avulla\/","title":{"rendered":"Paranna Laravel-koodausstandardejasi GrumPHP: n avulla"},"content":{"rendered":"<p>Riippumatta siit\u00e4, oletko kokenut kehitt\u00e4j\u00e4 vai tuoreempi, sinun tulisi parantaa koodausstandardejasi tullaksesi paremmaksi kehitt\u00e4j\u00e4ksi. Joko ty\u00f6skentelet yksin tai tiimin kanssa, on aina hyv\u00e4 k\u00e4yt\u00e4nt\u00f6 olla samat koodausk\u00e4yt\u00e4nn\u00f6t koko projektin ajan. Mutta samojen standardien yll\u00e4pito kaikissa paikoissa ei ole helppoa, jos tarkistamme sen manuaalisesti. Saattaa tapahtua, ett\u00e4 menetit standardin, vaikka p\u00e4\u00e4titkin noudattaa sit\u00e4. Se on inhimillinen virhe, unohdimme joskus asioita, joita meid\u00e4n ei pit\u00e4isi. T\u00e4llaisten ongelmien est\u00e4miseksi meid\u00e4n pit\u00e4isi automatisoida ty\u00f6nkulku. Tekem\u00e4ll\u00e4 niin, automaattinen j\u00e4rjestelm\u00e4mme huolehtii meille osoittamastamme teht\u00e4v\u00e4st\u00e4 ja 99,99% ajasta ei koskaan ep\u00e4onnistu.<\/p>\n<p><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a> on kirjasto, joka pit\u00e4\u00e4 silm\u00e4ll\u00e4 jokaista sitoutumistasi. Jos koodisi ei noudata annettuja standardeja, kirjasto ei salli koodin antamista. Korjaa koodi ensin ja sitten vain sin\u00e4 pystyt sitoutumaan Gitiin.<\/p>\n<p>Kuulostaa hyv\u00e4lt\u00e4? Katsotaanpa se toiminnassa.<\/p>\n<h3>P\u00e4\u00e4st\u00e4 alkuun<\/h3>\n<p>Kun puhumme Laravel-koodausstandardeista, sinulla pit\u00e4isi olla Laravel-projektiasetus. Jos sinulla ei ole sit\u00e4, asenna se komennolla:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel laravel-dev<\/code><\/pre>\n<p>T\u00e4ss\u00e4 &#8217;laravel-dev&#8217; on projektisi nimi. Avaa p\u00e4\u00e4te projektisi juurihakemistossa ja alusta git.<\/p>\n<pre><code>git init<\/code><\/pre>\n<p>Git on pakollinen projektissasi, jotta voit hy\u00f6dynt\u00e4\u00e4 GrumPHP: t\u00e4. T\u00e4ss\u00e4 se toimii. Kun asennamme GrumPHP: n, se luo koukun <code>.git<\/code>kansioon ja seuraa sitten jokaista sitoutumista.<\/p>\n<p>Lis\u00e4\u00e4 nyt ja sitouta nykyiset tiedostosi gitiin k\u00e4ytt\u00e4m\u00e4ll\u00e4 alla olevia komentoja yksi kerrallaan.<\/p>\n<pre><code>git add -A<\/code><\/pre>\n<pre><code>git commit -m 'initial commit'<\/code><\/pre>\n<h3>Paranna Laravel-koodausstandardia GrumPHP: n avulla<\/h3>\n<p>Kun Laravel-projektissamme on git-m\u00e4\u00e4ritys, on hyv\u00e4 asentaa GrumPHP-kirjasto. Asenna se suorittamalla seuraava komento:<\/p>\n<pre><code>composer require --dev phpro\/grumphp<\/code><\/pre>\n<p>Kun paketti on asennettu, sinun tulee n\u00e4hd\u00e4 alla oleva viesti terminaalissa:<\/p>\n<p>Varo! GrumPHP haistaa sitoutumistasi!<\/p>\n<p>Se tarkoittaa, ett\u00e4 paketti on asennettu onnistuneesti. Seuraavaksi avaa <code>grumphp.yml<\/code>tiedosto ja lis\u00e4\u00e4 siihen alla oleva koodi.<\/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>Yll\u00e4 olevassa koodissa t\u00e4rke\u00e4 osa on rivi <code>standard: PSR2<\/code>. T\u00e4ss\u00e4 kerrotaan GrumPHP: lle, ett\u00e4 se tarkistaa PSR2-koodausk\u00e4yt\u00e4nn\u00f6t tiedostoihin, jotka aikovat sitoutua. K\u00e4ytimme PSR2: ta t\u00e4\u00e4ll\u00e4, koska Laravel noudattaa PSR2-koodausstandardeja. T\u00e4m\u00e4n j\u00e4lkeen GrumPHP suorittaa teht\u00e4v\u00e4ns\u00e4 ja ilmoittaa meille virheest\u00e4 konsolissa, jos se l\u00f6ytyy.<\/p>\n<p>Jos et ole asentanut koodauksen vakiokirjastoa, asenna se suorittamalla alla oleva komento:<\/p>\n<pre><code>composer require \"squizlabs\/php_codesniffer=*\"<\/code><\/pre>\n<p>T\u00e4m\u00e4n kirjaston ytimess\u00e4 on PSR2-koodausstandardit. Joten, GrumPHP tarkistaa Laravel-koodisi PSR2: n perusteella ja ehdottaa muutoksia, jos et noudata PSR2-standardeja.<\/p>\n<p>Oletetaan <code>ImageController.php<\/code>, ett\u00e4 projektissamme on tiedosto ja ett\u00e4 siin\u00e4 on seuraava koodikappale.<\/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>Yrit\u00e4 sitten sitoa yll\u00e4 oleva koodi ja sinun pit\u00e4isi n\u00e4hd\u00e4 ulostulo jotain alla olevaa:<\/p>\n<p>Se antaa koodausvirheen yksityiskohdissa sek\u00e4 rivinumeron ja kuvauksen. Saatat my\u00f6s huomata rivin:<\/p>\n<p>PHPCBF VOI KORJATAA AUTOMAATTISESTI 2 MERKITTYJ\u00c4 SNIFF-RIKKOMUSTEN<\/p>\n<h3>Kuinka k\u00e4ytt\u00e4\u00e4 PHPCBF-komentoa<\/h3>\n<p>Suorittamalla PHPCBF-komento voimme korjata joitain virheit\u00e4 automaattisesti. Siirry p\u00e4\u00e4telaitteesta &#8217;vendor \/ bin&#8217; -hakemistoon ja suorita alla oleva komento korjataaksesi virheet PHPCBF: n avulla.<\/p>\n<pre><code>PHPCBF --standard=PSR2 PATH_TO_YOUR_CONTROLLER<\/code><\/pre>\n<p>Korvaa paikkamerkki todellisilla arvoilla. Todenn\u00e4k\u00f6isesti, jos k\u00e4yt\u00e4t t\u00e4t\u00e4 komentoa Git bashissa, saat virheilmoituksen &#8217;bash: phpcbf: komentoa ei l\u00f6ydy&#8217;. Suorita t\u00e4ll\u00f6in t\u00e4m\u00e4 komento Windowsin komentokehotteessa. Meid\u00e4n tapauksessamme n\u00e4emme seuraavan l\u00e4hd\u00f6n p\u00e4\u00e4telaitteessa.<\/p>\n<p>Muista, ett\u00e4 kaikkia virheit\u00e4 PHPCBH ei ole ratkaissut. Joskus sinun on ratkaistava virhe my\u00f6s manuaalisesti. Nyt kun yrit\u00e4t sitouttaa koodin, sinun pit\u00e4isi saada menestysviesti ja koodi sitoutua my\u00f6s.<\/p>\n<h3>Lopulliset ajatukset<\/h3>\n<p>T\u00e4ss\u00e4 opetusohjelmassa olemme keskustelleet Laravel-koodausstandardien parantamisesta GrumPHP: n avulla. Mutta se ei rajoitu vain Laraveliin. Voit k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 kirjastoa my\u00f6s muussa CMS: ss\u00e4, kehyksiss\u00e4. K\u00e4yt\u00e4mme GrumPHP-kirjastoa Laravel-, WordPress- ja PHP-ydinprojekteihimme. Se todella auttaa meit\u00e4 yll\u00e4pit\u00e4m\u00e4\u00e4n koodaustyyli\u00e4mme johdonmukaisesti.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/php_codesniffer-kirjasto-php-koodausstandardien-parantamiseen\/\" title=\"PHP_CodeSniffer - Kirjasto PHP-koodausstandardien parantamiseen\">PHP_CodeSniffer &#8211; Kirjasto PHP-koodausstandardien parantamiseen<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/opas-wordpress-koodausstandardien-parantamiseen\/\" title=\"Opas WordPress-koodausstandardien parantamiseen\">Opas WordPress-koodausstandardien parantamiseen<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <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 on kirjasto, joka auttaa meit\u00e4 parantamaan Laravel-koodausstandardeja. Se vain tarkistaa jokaisen Git-sitoutumisen ja l\u00f6ysi virheet, sitten ep\u00e4onnistui.<\/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":[499],"tags":[843],"class_list":["post-24129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24129"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24129\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20640"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}