{"id":229901,"date":"2022-11-13T15:37:00","date_gmt":"2022-11-13T12:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229901"},"modified":"2022-11-13T15:38:54","modified_gmt":"2022-11-13T12:38:54","slug":"saeveltaejae-wordpressille-osa-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/saeveltaejae-wordpressille-osa-2\/","title":{"rendered":"S\u00e4velt\u00e4j\u00e4 WordPressille, osa 2"},"content":{"rendered":"\n<p>T\u00e4ss\u00e4 viestiss\u00e4 p\u00e4\u00e4t\u00e4n sen, mit\u00e4 aloin jakaa <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/saeveltaejae-wordpressille-osa-1\/\" title=\"eilen\">eilen<\/a>: K\u00e4yt\u00e4n Composerin kanssa jakamiani ty\u00f6kaluja ja <a href=\"https:\/\/tommcfarlin.com\/tag\/libraries-for-wordpress-plugins\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kirjastoja haistamaan sitoumuksiasi kehityksen aikana ennen kuin koodi osuu arkistoon.<\/a><\/p>\n<p>Ihannetapauksessa haluat aina n\u00e4hd\u00e4 jotain t\u00e4llaista terminaalissasi aina, kun sitoudut koodiin:<\/p>\n<p>Mutta n\u00e4in ei aina ole. Kuten useimmissa asioissa, mit\u00e4 enemm\u00e4n harjoittelet, sit\u00e4 enemm\u00e4n totut kirjoittamaan koodia, joka v\u00e4litt\u00e4\u00e4 automaattisesti eri s\u00e4\u00e4nt\u00f6jen (ja niiden mukautusten) kautta asetetut haisut.<\/p>\n<p>Ennen kuin teet sen, sinun on kuitenkin m\u00e4\u00e4ritett\u00e4v\u00e4 GrumPHP arkistossasi.<\/p>\n<h2>WordPressin s\u00e4velt\u00e4j\u00e4: Sniffing Commits<\/h2>\n<p>Eilen annoin n\u00e4ytteen, <code>composer.json<\/code>\u00a0joten t\u00e4n\u00e4\u00e4n tarkastelemme mallia GrumPHP-m\u00e4\u00e4ritystiedostosta ja katsomme, mit\u00e4 kukin osa tekee.<\/p>\n<p>T\u00e4rke\u00e4\u00e4 on huomata, ett\u00e4 vaikka jotkut n\u00e4kem\u00e4si sis\u00e4ll\u00f6st\u00e4 eiv\u00e4t ole ep\u00e4tyypillisi\u00e4 projektille, voit hienos\u00e4\u00e4t\u00e4\u00e4 t\u00e4t\u00e4 niin paljon kuin haluat jokaisessa k\u00e4ytt\u00e4m\u00e4ss\u00e4si projektissa. Joskus saatat haluta sen olevan keskittyneempi kuin nyt; toisinaan et ehk\u00e4 v\u00e4lit\u00e4 joistakin sen tarjoamista nuuskimista.<\/p>\n<h3>Alkukokoonpano<\/h3>\n<p>Kuitenkin, kun GrumPHP on asennettu, se luo l\u00e4hes tyhj\u00e4n <code>grumphp.yml<\/code>tiedoston, joka on valmis m\u00e4\u00e4ritett\u00e4v\u00e4ksi. Esimerkiksi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/ab0cd032408fdc5cc30c035d77ea49ba#file-00-initial-grumphp-yml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4 sinun pit\u00e4isi n\u00e4hd\u00e4<\/a> :<\/p>\n<pre><code>parameters:\n    git_dir:. bin_dir: vendor\/bin\n    tasks:<\/code><\/pre>\n<p>Huomaa, ett\u00e4 siin\u00e4 ei ole muuta kuin t\u00e4sment\u00e4minen:<\/p>\n<ul>\n<li>arkiston sijainti,<\/li>\n<li>Composerin kautta asennettujen binaarien sijainti,<\/li>\n<li>suoritettavat teht\u00e4v\u00e4t.<\/li>\n<\/ul>\n<p>Huomaa, ett\u00e4 olen aina k\u00e4ytt\u00e4nyt &quot;.&quot; arkiston sijaintiin, koska en ole koskaan asentanut sit\u00e4 ty\u00f6skentelem\u00e4\u00e4ni arkistoon.<\/p>\n<p>Sama koskee Composer-bin\u00e4\u00e4ri\u00e4. Eli kun olen asentanut kaiken Composerin kautta, j\u00e4t\u00e4n ne alkuper\u00e4isille paikoilleen.<\/p>\n<p>Ja lopuksi, alkuper\u00e4inen <code>tasks<\/code>ohje on tyhj\u00e4, koska mit\u00e4\u00e4n ei ole viel\u00e4 suoritettavaa. Sit\u00e4 tarkastelen seuraavassa vaiheessa.<\/p>\n<h3>GrumPHP:n asetukset<\/h3>\n<p>Kun olet asentanut kirjastosi ja olet valmis tekem\u00e4\u00e4n asetuksia, voit ehk\u00e4 tehd\u00e4 jotain <a href=\"https:\/\/gist.github.com\/tommcfarlin\/ab0cd032408fdc5cc30c035d77ea49ba#file-01-sample-grumphp-yml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4n kaltaista<\/a> :<\/p>\n<pre><code>parameters:\n    git_dir:. bin_dir: vendor\/bin\n    tasks:\n      securitychecker:\n      composer:\n      jsonlint:\n      xmllint:\n      yamllint:\n      phpstan:\n      phplint:\n      phpunit:\n      phpcs:\n      phpcpd:\n      phpmnd:\n      phpparser:\n        visitors:\n          no_exit_statements: ~\n          never_use_else: ~\n          forbidden_function_calls:\n            blacklist:\n              - \"die\"\n              - \"var_dump\"\n              - \"exit\"\n      phpversion:\n        project: '7.0'\n       phpmd:\n         ruleset: ['phpmd.xml.dist']<\/code><\/pre>\n<p>En hahmottele kaikkea yll\u00e4 (koska siin\u00e4 ei ole paljon hahmoteltavaa), mutta muutamia asioita on silti huomautettava:<\/p>\n<ul>\n<li>Huomaa, ett\u00e4 teht\u00e4vist\u00e4 on paljon pidempi luettelo kuin alkuper\u00e4isess\u00e4 hakemistossa m\u00e4\u00e4ritetty. Se on normaalia, ja se tarkoittaa, ett\u00e4 haluamme k\u00e4ytt\u00e4\u00e4 n\u00e4it\u00e4 ty\u00f6kaluja k\u00e4ytt\u00e4m\u00e4ll\u00e4 kunkin ty\u00f6kalun oletusasetuksia.<\/li>\n<li>Muutamista s\u00e4\u00e4nn\u00f6ist\u00e4 on <code>~<\/code>vierekk\u00e4in. T\u00e4m\u00e4 riippuu kyseess\u00e4 olevasta teht\u00e4v\u00e4st\u00e4, mutta t\u00e4m\u00e4 tarkoittaa yleens\u00e4 sit\u00e4, ett\u00e4 haluamme k\u00e4ytt\u00e4\u00e4 oletuskokoonpanoa.<\/li>\n<li>On teht\u00e4vi\u00e4, kuten <code>phpparser<\/code>aliteht\u00e4vi\u00e4. Jotkut niist\u00e4, kuten yll\u00e4 n\u00e4et, k\u00e4ytt\u00e4v\u00e4t oletusk\u00e4ytt\u00e4ytymist\u00e4. Toiset valitsevat mustalle listalle termit, kuten <code>die<\/code>, <code>var_dump<\/code>, <code>exit<\/code>, ja muut. T\u00e4m\u00e4 tarkoittaa, ett\u00e4 ik\u00e4\u00e4n kuin ohje ei olisi tarpeeksi selke\u00e4, saamme GrumPHP:n ep\u00e4onnistumaan, jos jokin n\u00e4ist\u00e4 lauseista havaitaan.<\/li>\n<li>Katso samalla tavalla <code>phpmd<\/code>. T\u00e4m\u00e4 viittaa s\u00e4\u00e4nt\u00f6ihin, joita k\u00e4yt\u00e4mme etsiess\u00e4mme erilaisia \u200b\u200b\u200b\u200bsotkuja koodista. T\u00e4ss\u00e4 tapauksessa se osoittaa <code>dist<\/code>\u00a0tiedostoon, mutta voi osoittaa mit\u00e4 tahansa m\u00e4\u00e4ritt\u00e4m\u00e4\u00e4si mukautettua s\u00e4\u00e4nt\u00f6joukkoa.<\/li>\n<\/ul>\n<p>T\u00e4m\u00e4 on vain esimerkki siit\u00e4, mit\u00e4 voit tehd\u00e4 GrumPHP:ll\u00e4. Eli voit asentaa joitain kirjastoja Composerin kautta, asentaa ne ja sitten r\u00e4\u00e4t\u00e4l\u00f6id\u00e4 GrumPHP:t\u00e4 niin, ett\u00e4 hy\u00f6dynn\u00e4t sen tarjoamia toimintoja.<\/p>\n<p>Kuten muissakin vastaavissa projekteissa, suosittelen lukemaan <a href=\"https:\/\/github.com\/phpro\/grumphp\/blob\/master\/doc\/tasks.md\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentaation<\/a>, joka on olemassa eri teht\u00e4vist\u00e4, jotka integroidaan GrumPHP:hen.<\/p>\n<h2>Onko t\u00e4m\u00e4 Composer for WordPress?<\/h2>\n<p>Kyll\u00e4 ja ei. <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> on yleisk\u00e4ytt\u00f6inen paketinhallinta PHP-projekteille; Emme kuitenkaan n\u00e4yt\u00e4 n\u00e4kev\u00e4n sit\u00e4 juurikaan WordPressin maailmassa. T\u00e4m\u00e4 ei tarkoita sit\u00e4, ettei sit\u00e4 k\u00e4ytet\u00e4 (on), mutta pelkk\u00e4 Composerin tunteminen ja sen k\u00e4ytt\u00f6 ei riit\u00e4.<\/p>\n<p>Sen sijaan mielest\u00e4ni on t\u00e4rke\u00e4\u00e4 osata k\u00e4ytt\u00e4\u00e4 Composeria WordPressille, jotta voimme kirjoittaa mahdollisimman korkealaatuista koodia ja samalla varmistaa, ett\u00e4 noudatamme kaikkia koodausstandardeja, joita olemme my\u00f6s valinneet. .<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4m\u00e4 on viimeinen kaksiosaisessa sarjassa, jossa k\u00e4sitell\u00e4\u00e4n Composerin konfigurointia WordPress-kehityst\u00e4 varten, jotta voit kirjoittaa t\u00f6iss\u00e4si laadukkaampaa koodia).<\/p>\n","protected":false},"author":1,"featured_media":223641,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,843,803],"tags":[1166],"class_list":["post-229901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opetusohjelmia","category-php-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=229901"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223641"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}