{"id":229747,"date":"2022-11-09T17:10:00","date_gmt":"2022-11-09T14:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229747"},"modified":"2022-11-09T17:14:08","modified_gmt":"2022-11-09T14:14:08","slug":"psr-kirjausliittymae-ja-miksi-kirjaaminen-on-taerkeaeae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/psr-kirjausliittymae-ja-miksi-kirjaaminen-on-taerkeaeae\/","title":{"rendered":"PSR-kirjausliittym\u00e4 (ja miksi kirjaaminen on t\u00e4rke\u00e4\u00e4)"},"content":{"rendered":"\n<p>Kaksi PHP:n ominaisuutta, joita mielest\u00e4ni k\u00e4ytet\u00e4\u00e4n usein liikaa &quot;virheenkorjauksessa&quot;, ovat <a href=\"https:\/\/php.net\/manual\/en\/function.echo.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">echo<\/a> ja <a href=\"https:\/\/php.net\/manual\/en\/function.var-dump.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">var_dump<\/a>. Olen puhunut t\u00e4st\u00e4 muutamassa eri virheenkorjausta k\u00e4sittelev\u00e4ss\u00e4 artikkelissa (kuten <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/xdebugin-kaeyttoe-valetin-ja-wordpressin-kanssa\/\" title=\"t\u00e4\u00e4ll\u00e4\">t\u00e4\u00e4ll\u00e4<\/a> ja <a href=\"https:\/\/tommcfarlin.com\/debugging-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4\u00e4ll\u00e4<\/a> ).<\/p>\n<p>Ja niin paljon kuin olen debuggerin k\u00e4ytt\u00e4misen fani, mielest\u00e4ni on my\u00f6s t\u00e4rke\u00e4\u00e4 ottaa k\u00e4ytt\u00f6\u00f6n er\u00e4\u00e4nlainen lokij\u00e4rjestelm\u00e4, jotta sin\u00e4 tai asiakkaasi voitte palata tarkastelemaan j\u00e4rjestelm\u00e4ss\u00e4 tapahtuvaa toimintaa heid\u00e4n tai heid\u00e4n k\u00e4ytt\u00e4jiens\u00e4 k\u00e4ytt\u00e4nyt sit\u00e4.<\/p>\n<p>T\u00e4m\u00e4n tekemiseen on kuitenkin kaksi n\u00e4k\u00f6kohtaa, varsinkin jos haluat seurata PSR-kirjausliittym\u00e4\u00e4, ja ne ovat:<\/p>\n<ol>\n<li>varsinaisen kirjausliittym\u00e4n s\u00e4\u00e4nn\u00f6t,<\/li>\n<li>projekti, joka toteuttaa oikein mainitun lokirajapinnan.<\/li>\n<\/ol>\n<p>Joten miksi et k\u00e4sittele molempia t\u00e4ss\u00e4 viestiss\u00e4?<\/p>\n<h2>PSR-kirjausliittym\u00e4<\/h2>\n<p>PSR &#8211; <a href=\"http:\/\/www.php-fig.org\/psr\/psr-3\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lokirajapinta<\/a> (tai PSR-3) kattaa useita asioita, joista voit lukea tarkemmin varsinaisella sivulla.<\/p>\n<p>N\u00e4m\u00e4 sis\u00e4lt\u00e4v\u00e4t:<\/p>\n<ol>\n<li>Perusteet<\/li>\n<li>Viestit<\/li>\n<li>Konteksti<\/li>\n<li>Auttajaluokat<\/li>\n<li>Paketit<\/li>\n<li>Liit\u00e4nn\u00e4t<\/li>\n<li>Lokitasot<\/li>\n<li>Ja enemm\u00e4n.<\/li>\n<\/ol>\n<p>Mutta t\u00e4m\u00e4n artikkelin tarkoituksiin haluan puhua nimenomaan k\u00e4ytt\u00f6liittym\u00e4st\u00e4 itsest\u00e4\u00e4n, sen toteuttavasta projektista ja siit\u00e4, miksi se on t\u00e4rke\u00e4.<\/p>\n<h3>Kirjausliittym\u00e4<\/h3>\n<p>Asiakirjan kotisivulla lukee:<\/p>\n<blockquote>\n<p>T\u00e4ss\u00e4 asiakirjassa kuvataan yhteinen k\u00e4ytt\u00f6liittym\u00e4 kirjastojen kirjaamiseen.<\/p>\n<p>P\u00e4\u00e4tavoitteena on antaa kirjastoille mahdollisuus vastaanottaa PsrLogLoggerInterface-objekti ja kirjoittaa siihen lokeja yksinkertaisella ja yleisell\u00e4 tavalla.<\/p>\n<\/blockquote>\n<p>Kehityksen n\u00e4k\u00f6kulmasta se on mukavaa, eik\u00f6? Tarkoitan, ett\u00e4 se tarjoaa yhden, johdonmukaisen tavan, jolla voimme panostaa mihin tahansa lokikirjastoon, jota p\u00e4\u00e4t\u00e4mme k\u00e4ytt\u00e4\u00e4 projekteissamme. Kerron haluamastani kirjastosta my\u00f6hemmin artikkelissa.<\/p>\n<p>Niille, jotka ovat uusia olio-ohjelmoinnissa tai jotka ovat vain kiinnostuneita siit\u00e4, kuinka yhten\u00e4inen k\u00e4ytt\u00f6liittym\u00e4 hy\u00f6dytt\u00e4\u00e4 meit\u00e4, ajattele asiaa n\u00e4in: Riippumatta siit\u00e4, mink\u00e4 j\u00e4rjestelm\u00e4n valitset, sinulla on taatusti tietty joukko toimintoja, tiloja ja niin edelleen. voi k\u00e4ytt\u00e4\u00e4 sovelluksessasi.<\/p>\n<p>Loppujen lopuksi sellaisen lokij\u00e4rjestelm\u00e4n lis\u00e4\u00e4minen, jolla on standardi, jota sen on noudatettava, tarjoaa useita etuja riippumatta siit\u00e4, mink\u00e4 kirjaston valitset (kunhan se on PSR-3:n mukainen).<\/p>\n<h3>Kokeile Monologia<\/h3>\n<p><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monolog<\/a> on enemm\u00e4n tai v\u00e4hemm\u00e4n de facto lokity\u00f6kalu PHP-sovelluksille.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166191-61e78fbe1b295.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166191-61e78fbe1b295.png\" alt=\"PSR-kirjausliittym\u00e4 (ja miksi kirjaaminen on t\u00e4rke\u00e4\u00e4)\"><\/a><\/p>\n<p>Projektin lis\u00e4\u00e4minen <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composerin<\/a> kautta on helppoa, mutta se sis\u00e4lt\u00e4\u00e4 my\u00f6s useita erilaisia \u200b\u200btapoja tulostaa tietoja:<\/p>\n<blockquote>\n<p>Monolog l\u00e4hett\u00e4\u00e4 lokit tiedostoihin, pistorasiaan, postilaatikoihin, tietokantoihin ja erilaisiin verkkopalveluihin. Katso t\u00e4ydellinen luettelo k\u00e4sittelij\u00f6ist\u00e4 alta. Erikoisk\u00e4sittelij\u00f6iden avulla voit rakentaa edistyneit\u00e4 kirjausstrategioita.<\/p>\n<\/blockquote>\n<p>Henkil\u00f6kohtaisesti olen k\u00e4ytt\u00e4nyt sit\u00e4 vain l\u00e4hetyksen yhteydess\u00e4 tiedostoihin; On kuitenkin hyv\u00e4, ett\u00e4 sen voi tulostaa muihin j\u00e4rjestelmiin (etenkin tietokantoihin, kuten WordPressin kanssa ty\u00f6skennelless\u00e4). Et tietenk\u00e4\u00e4n halua k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 kyky\u00e4 v\u00e4\u00e4rin.<\/p>\n<p>Toiseksi on t\u00e4rke\u00e4\u00e4 tunnustaa, ett\u00e4 vaikka voit instantioida Loggerin funktiossa tai muussa luokassa, on olemassa muita, oliokeskeisempi\u00e4 tapoja tehd\u00e4 t\u00e4m\u00e4. PSR-3 kattaa t\u00e4m\u00e4n (kuten edell\u00e4 mainittiin).<\/p>\n<p>Lyhyesti sanottuna haluat varmistaa, ett\u00e4 luokkasi hyv\u00e4ksyy luokan esiintym\u00e4n, joka toteuttaa LoggerInterfacen. Monolog toteuttaa mainitun k\u00e4ytt\u00f6liittym\u00e4n, joten se ei ole ongelma.<\/p>\n<p>Lis\u00e4ksi, mit\u00e4 tapahtuu, kun sinulla on joukko toisiinsa liittyvi\u00e4 luokkia, joiden kaikkien on otettava k\u00e4ytt\u00f6\u00f6n loki?<\/p>\n<ul>\n<li>Periv\u00e4tk\u00f6 n\u00e4m\u00e4 luokat yhteiselt\u00e4 vanhemmalta?<\/li>\n<li>Toteuttavatko n\u00e4m\u00e4 luokat jotain <a href=\"https:\/\/php.net\/manual\/en\/language.oop5.traits.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ominaisuutta<\/a>? (T\u00e4m\u00e4n vaihtoehdon yst\u00e4v\u00e4ni esitteli minulle \u00e4skett\u00e4in.)<\/li>\n<li>Hyv\u00e4ksyyk\u00f6 jokainen luokka riippuvuuden rakentajainjektion avulla?<\/li>\n<\/ul>\n<p>On olemassa useita tapoja, joilla loggareita voidaan lis\u00e4t\u00e4 luokkaan, ja se riippuu siit\u00e4, miten projektisi on j\u00e4rjestetty.<\/p>\n<h2>Lis\u00e4\u00e4 kirjaamisesta<\/h2>\n<p>Joka tapauksessa kirjautumisen k\u00e4ytt\u00f6\u00f6notto sovellukseen on t\u00e4rke\u00e4\u00e4 useista syist\u00e4, kuten vianm\u00e4\u00e4rityksest\u00e4, kun jokin ei toimi odotetulla tavalla sek\u00e4 kehityksess\u00e4, lavastuksessa ett\u00e4 erityisesti tuotannossa.<\/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>Jos haluat seurata PSR-lokirajapintaa, tarkista PSR-3 ja tutustu Monologiin, joka toteuttaa mainitun loggerin k\u00e4ytt\u00f6liittym\u00e4n.<\/p>\n","protected":false},"author":1,"featured_media":166192,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,843],"tags":[1166],"class_list":["post-229747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229747","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=229747"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/166192"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}