{"id":229026,"date":"2022-11-04T10:17:00","date_gmt":"2022-11-04T07:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229026"},"modified":"2022-11-09T05:14:25","modified_gmt":"2022-11-09T02:14:25","slug":"muutumatud-vaeaertused-wordpressi-pistikprogrammides","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/muutumatud-vaeaertused-wordpressi-pistikprogrammides\/","title":{"rendered":"Muutumatud v\u00e4\u00e4rtused WordPressi pistikprogrammides"},"content":{"rendered":"\n<p>Kui olete objektorienteeritud programmeerimise kallal t\u00f6\u00f6d teinud v\u00f5i isegi lugenud, olete t\u00f5en\u00e4oliselt kohanud muutumatuse ideed. See on idee, et miski on muutumatu.<\/p>\n<p>M\u00f5nikord v\u00f5ivad teil olla muutumatud v\u00e4\u00e4rtused ja m\u00f5nikord muutumatud objektid (v\u00e4hemalt p\u00e4rast nende instantseerimist).<\/p>\n<p>Muutumatule vastand (aga ta oli igatahes mu lemmikkilpkonn ninja).<\/p>\n<p>Asi on selles, et mida rohkem ma objektorienteeritud koodiga t\u00f6\u00f6tan, seda v\u00e4hem kipun t\u00f6\u00f6tama muutumatute muutujatega. Muidugi, ma kasutan konstante, nagu on m\u00e4\u00e4ratletud konfiguratsioonifailis, kuid te ei leia mind t\u00f5en\u00e4oliselt klassis v\u00e4\u00e4rtusi <a href=\"https:\/\/php.net\/manual\/en\/language.oop5.constants.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">const<\/a>.<\/p>\n<p>See ilmselt viitab midagi minu ja minu v\u00f5imete kohta, kuid see on t\u00f5si. \u00d5nneks aitavad <a href=\"https:\/\/tommcfarlin.com\/code-reviews\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koodide \u00fclevaated<\/a> suurep\u00e4raselt n\u00e4ha v\u00f5imalusi, kuidas kasutada strateegiaid, mida te tavaliselt ei kasuta. Ja see on WordPressi pistikprogrammide muutumatute v\u00e4\u00e4rtuste puhul.<\/p>\n<p>See on muidugi \u00fcks neist asjadest, <a href=\"https:\/\/twitter.com\/tobyschrapel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">millele s\u00f5ber<\/a> mu koodi \u00fcle vaadates juhtis.<\/p>\n<p>WordPressiga t\u00f6\u00f6tades tunnevad paljud meist t\u00f5en\u00e4oliselt <strong>funktsioone functions.php<\/strong> ja <strong>wp-config.php<\/strong> ning nende rolli WordPressi p\u00f5hirakenduses.<\/p>\n<p>Jah, m\u00f5nikord\u00a0 kuuluvad asjad faili <strong>wp-config.php<\/strong> ja jah, on aegu, kus asjad kuuluvad\u00a0 faili <strong>functions.php<\/strong>, kuid m\u00f5nikord arvan, et seda faili kuritarvitatakse liiga paljude funktsioonide, v\u00e4\u00e4rtuste ja muuga. .<\/p>\n<p>Aga kuidas on pistikprogrammidega? T\u00e4psemalt, kuidas on lood objektorienteeritud pistikprogrammidega? N\u00e4iteks oletagem, et t\u00f6\u00f6tate API-ga, mis n\u00f5uab API-v\u00f5tit, nii et rakenduse tasuta versiooniga ei satuks te teatud kiiruspiirangut.<\/p>\n<p>Tavaliselt v\u00f5ib juhtuda, et ma salvestan v\u00e4\u00e4rtust pistikprogrammi p\u00f5hiklassi eksemplarimuutujana, mida saab edasi anda, v\u00f5i v\u00f5ib-olla on see konteinerklassis, millele saan viidata ja kasutada selle <strong>hankimismeetodit<\/strong>.<\/p>\n<p>Aga kuidas kasutada klassis atribuuti <a href=\"https:\/\/php.net\/manual\/en\/language.oop5.constants.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">const ja seej\u00e4rel edastada see setteri s\u00fcstimise teel?<\/a><\/p>\n<p>Oletame n\u00e4iteks, et on olemas pluginaklass, mis toetub abiklassile, et midagi ekraanil renderdada. API-v\u00f5tme saab selles klassis m\u00e4\u00e4ratleda ja seej\u00e4rel <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d588e0c45cf96bcd5f10614ccf432339#file-00-main-plugin-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vajadusel abistajale edastada<\/a> :<\/p>\n<pre><code>&lt;?php\n\nclass Main_Plugin {\n\n  const ACME_API_KEY = '123456789';\n\n  public function init() {\n\n    $helper = new Helper_Class();\n    $helper-&gt;render_acme_data( self::ACME_API_KEY );\n  }\n}<\/code><\/pre>\n<p>J\u00e4rgmisena saab abiklass oma URL-i kasutades helistada suvalisele API-le (ma nimetan seda Canvasiks, kuna me oleme h\u00fcpoteetiliselt midagi), ja edastab API-v\u00f5tme p\u00e4ringustringi osana.<\/p>\n<pre><code>&lt;?php\n\nclass Helper_Class {\n\n  public function render_acme_data( string $api_key) {\n\n    $canvas_url = 'https:\/\/url-for-canvas.com?api_key='. $api_key;\n    $canvas = new Canvas( $canvas_url );\n\n    $canvas-&gt;draw();\n  }\n}<\/code><\/pre>\n<p>Nii:<\/p>\n<ul>\n<li>v\u00e4\u00e4rtust hoitakse \u00fches kohas,<\/li>\n<li>seal on kirjeldav nimi, mis n\u00e4itab, mida see salvestab,<\/li>\n<li>seda saab minimaalse s\u00f5ltuvusega edasi anda teistele klassidele,<\/li>\n<li>teised klassid v\u00f5ivad viidata neile kui kohalikele muutujatele v\u00f5i eksemplarimuutujatele (olenevalt sellest, kuidas neid edasi antakse).<\/li>\n<\/ul>\n<p>Muidugi, on ka muid viise, kuidas neid v\u00e4\u00e4rtusi hoida (taas kasutades <strong>funktsioonid.php<\/strong> v\u00f5i midagi sarnast).<\/p>\n<p>Aga kui t\u00f6\u00f6tate objektorienteeritud programmeerimisega ja soovite t\u00f6\u00f6tada WordPressi pistikprogrammis muutumatute v\u00e4\u00e4rtustega, kas poleks m\u00f5ttekas hoida seda pistikprogrammi moodustavate klasside kontekstis?<\/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>Koodi\u00fclevaated aitavad teil n\u00e4ha v\u00f5imalusi, kus kasutada tehnikaid, mida v\u00f5ite kasutamata j\u00e4tta. See on WordPressi pistikprogrammide muutumatute v\u00e4\u00e4rtuste puhul.<\/p>\n","protected":false},"author":1,"featured_media":166654,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,916,842,802,863],"tags":[1165],"class_list":["post-229026","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-muud","category-opetused","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=229026"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229026\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/166654"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}