{"id":229188,"date":"2022-11-08T18:07:00","date_gmt":"2022-11-08T15:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229188"},"modified":"2022-11-09T05:53:11","modified_gmt":"2022-11-09T02:53:11","slug":"pohilised-kodeerimisstandardid-psr-1-kaudu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/pohilised-kodeerimisstandardid-psr-1-kaudu\/","title":{"rendered":"P\u00f5hilised kodeerimisstandardid PSR-1 kaudu"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/et\/psr-ide-kasutamine-vorreldes-wordpressi-kodeerimisstandarditega\/\" title=\"Eile\" >Eile<\/a> r\u00e4\u00e4kisin l\u00fchidalt PSR-ide kasutamise p\u00f5hjendusest <a href=\"http:\/\/www.php-fig.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00f5rreldes<\/a> WordPressi <a href=\"https:\/\/codex.wordpress.org\/WordPress_Coding_Standards\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kodeerimisstandarditega<\/a> ning millal ja miks m\u00f5lema puhul. Kuid see ei t\u00e4henda, et see poleks segadust tekitavate punktideta, eriti kui te nendega alles alustate, eks?<\/p>\n<p>Selle all pean silmas j\u00e4rgmist: Oletagem, et olete aastaid t\u00f6\u00f6tanud WordPressi kodeerimisstandarditega (sest ma suudan nendega samastada) ja n\u00fc\u00fcd tuleb j\u00e4rgida t\u00e4iesti uusi reegleid ja juhiseid. Kuid see pole lihtsalt t\u00fchiku muutmine ja failide \u00fcmbernimetamine.<\/p>\n<p>J\u00e4rgida tuleb ka teisi punkte, millest iga\u00fcks on s\u00f5na otseses m\u00f5ttes (PSR-1, PSR-2 jne) v\u00e4lja toodud arvuna, kuidas miski peaks t\u00f6\u00f6tama.<\/p>\n<p>Kui r\u00e4\u00e4kida PSR-1-s kirjeldatud p\u00f5hilistest kodeerimisstandarditest, siis millised on probleemsed valdkonnad, millega v\u00f5ime WordPressi arendajatena kokku puutuda?<\/p>\n<h2>P\u00f5hilised kodeerimisstandardid (ja k\u00f5rvalm\u00f5jud)<\/h2>\n<p>Mul ei ole plaanis k\u00f5iki dokumente l\u00e4bi vaadata ja uuesti l\u00e4bi lugeda seda, mida me saame lihtsalt <a href=\"http:\/\/www.php-fig.org\/psr\/psr-1\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">neid lugedes<\/a> \u00f5ppida, kuid arvan, et on midagi \u00f6elda, kui v\u00f5taksime midagi, mida paljud meist teevad v\u00f5i kogevad, ja vaatame, kuidas see v\u00f5ib muutuda. WordPressi kontekstis.<\/p>\n<p>V\u00f5tke n\u00e4iteks Basic Coding Standardi (v\u00f5i <a href=\"http:\/\/www.php-fig.org\/psr\/psr-1\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-1 )<\/a> <strong>k\u00f5rvalm\u00f5jud<\/strong> :<a href=\"http:\/\/www.php-fig.org\/psr\/psr-1\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><\/p>\n<blockquote>\n<p>Fail PEAKS deklareerima uusi s\u00fcmboleid (klassid, funktsioonid, konstandid jne) ega p\u00f5hjusta muid k\u00f5rvalm\u00f5jusid v\u00f5i PEAKS t\u00e4itma k\u00f5rvalm\u00f5judega loogikat, kuid EI TOHI teha m\u00f5lemat.<\/p>\n<p>V\u00e4ljend &quot;k\u00f5rvalm\u00f5jud&quot; t\u00e4hendab loogika t\u00e4itmist, mis ei ole otseselt seotud klasside, funktsioonide, konstantide jne deklareerimisega, pelgalt faili kaasamisest.<\/p>\n<\/blockquote>\n<p>Isiklikult leian, et teine \u200b\u200bfraas on v\u00f5ti, et m\u00f5ista ja v\u00e4ltida k\u00f5rvalm\u00f5jusid meie koodis nii palju kui v\u00f5imalik. See t\u00e4hendab, et k\u00f5ik, mida meie klassid teevad, peaks olema iseseisev v\u00f5i olema sidus millegagi, mis v\u00f5ib olla mingil viisil s\u00fcstitud.<\/p>\n<p>Sellest hoolimata ei tohiks k\u00f5rvalm\u00f5ju tekitava koodi leidmine ja selle puhastamine olla liiga raske. Tegelikult toon n\u00e4itena ennast.<\/p>\n<p>Vaadake seda konkreetset <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f9de10bd98d0ba3dd22c914b01fad140#file-00-toggle-admin-notices-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koodil\u00f5iku<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace TAN;\nuse TANAdmin;\n\ninclude_once( 'admin\/class-toggle-admin-notices-node.php' );\ninclude_once( 'admin\/interfaces\/interface-asset.php' );\ninclude_once( 'admin\/class-javascript-assets.php' );\n\nadd_action( 'plugins_loaded', __NAMESPACE__. 'tan_start' );\n\/**\n * Initializes the JavaScript loader and the Administration Bar Node for\n * rendering the option to toggle admin notices.\n *\/\nfunction tan_start() {\n  \/\/ Code removed for brevity.\n}\n<\/code><\/pre>\n<p>See kood on otse <a href=\"https:\/\/tommcfarlin.com\/wordpress-admin-notices\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jaotisest Toggle Admin Notices<\/a>. T\u00f5si, see on lihtne ja <a href=\"https:\/\/github.com\/tommcfarlin\/toggle-admin-notices\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hoidlas<\/a> kuvatakse m\u00e4rge selle muutmise kohta. See n\u00e4itab siiski asja m\u00f5tet, eks?<\/p>\n<p>Mis on lahendus? See toimub automaatse laadimise vormis (mida k\u00e4sitleb ka <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> ). Mis siis, kui ma peaksin selle taastama, nii et see j\u00e4rgiks PSR-1 korralikult? Siis v\u00f5ib \u00fcks viis selle \u00fcmberkujundamiseks <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f9de10bd98d0ba3dd22c914b01fad140#file-01-toggle-admin-notices-autoloading-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00e4lja n\u00e4ha j\u00e4rgmine<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace TAN;\nuse TANAdmin;\n\ninclude_once 'inc\/autoload.php';\n\nadd_action( 'plugins_loaded', __NAMESPACE__. 'tan_start' );\n\/**\n * Initializes the JavaScript loader and the Administration Bar Node for\n * rendering the option to toggle admin notices.\n *\/\nfunction tan_start() {\n  \/\/ Code removed for brevity.\n}\n<\/code><\/pre>\n<p>Kas see on suurep\u00e4rane n\u00e4ide? Ilmselt mitte. Kuid see on midagi enamat kui lihtsalt failide kaasamine. Nende failide kaasamine toob kaasa mitmesugused k\u00f5rvalm\u00f5jud.<\/p>\n<p>See t\u00e4hendab, et ainult see \u00fcks fail vastutab palju enama kui ainult nende nelja koodirea eest. M\u00f5elge sellele, et see h\u00f5lmab k\u00f5ike, mida teised failid rakendavad. Sel hetkel muutub see keerulisemaks.<\/p>\n<p>Nii et v\u00f5tke see idee ja viige see palju suuremasse s\u00fcsteemi ja n\u00e4ete, kuidas ja miks see probleemne oleks.<\/p>\n<p>Muidugi on ka alternatiivseid viise. Ja see on vaid \u00fcks n\u00e4ide. Ennast halvustav ka. Asi ei ole niiv\u00f5rd selles, et n\u00e4idata selleks l\u00f5plikku viisi, vaid hakata k\u00fclvama m\u00f5tteid selle kohta, kuidas me klasse kavandame, planeerime, ehitame ja kaasame.<\/p>\n<h3>Aga vaated?<\/h3>\n<p>Mis puutub pistikprogrammide kirjutamisse, siis k\u00e4sitlen seda, mida kasutajad n\u00e4evad, <strong>vaadetena.\u00a0<\/strong>Kuid tundub, et siin on konks: failide lisamist peetakse halvaks tavaks, kuna see toob kaasa k\u00f5rvalm\u00f5jusid.<\/p>\n<p>Seega ei taha me oma tundides loogikat v\u00e4ljastada, vaid tahame ka esitluse \u00e4riloogikast eraldada.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166223-61e7906a0bf19.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-166223-61e7906a0bf19.png\" alt=\"P\u00f5hilised kodeerimisstandardid PSR-1 kaudu\" ><\/a><\/p>\n<p>Mida me tegema peame?<\/p>\n<blockquote>\n<p>Keerd on see, et me kasutame selleks objektorienteeritud programmeerimist. Kujundame klassi, mis genereerib PHP malli abil HTML-i.<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/carlalexander.ca\/designing-class-generate-wordpress-html-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Keegi teine<\/a> \u200b\u200bon seda p\u00f5hjalikult k\u00e4sitlenud ja soovitan tungivalt seda konkreetset postitust lugeda, et v\u00f5tta arvesse k\u00f5rvalm\u00f5jude ideed, neid v\u00e4ltida ja kasutada v\u00f5imalikult palju kindlaid tavasid.<\/p>\n<h2>\u2026Ja varad ja seotud failid?<\/h2>\n<p>Ma tean: m\u00f5te k\u00f5rvalm\u00f5judest eemalduda (r\u00e4\u00e4kimata nende tuvastamisest) v\u00f5ib alguses olla imelik, eriti kui m\u00f5elda teatud asjadele, mida oleme nii kaua teinud.<\/p>\n<p>Ja see v\u00f5ib tekitada selliseid k\u00fcsimusi: kas JavaScripti- v\u00f5i CSS-failide kaasamine on vale? See on ilmselt m\u00f5ne teise postituse teema. Pidage siiski meeles, et sellega on otseselt seotud API p\u00f5hifunktsioonid ja need v\u00f5ivad kuuluda selle eest rangelt vastutavasse klassi.<\/p>\n<p>Kui klassi eesm\u00e4rk on teha t\u00e4pselt seda ja ainult seda ning ta kasutab selleks API funktsioone, siis ma \u00fctleksin, et see on t\u00f5en\u00e4oliselt okei.<\/p>\n<p>Kuid ma kaldun sellest praegu k\u00f5rvale (ja v\u00f5ib-olla on see kommentaaride v\u00f5i j\u00e4llegi m\u00f5ne muu postituse teema).<\/p>\n<p>Selle asemel hoidke oma tunnid lahjad ja sihikindlad. Nad peaksid toimima nagu <a href=\"http:\/\/www.php-fig.org\/psr\/psr-1\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-1<\/a> olekud ja v\u00e4ltima selliseid asju nagu &quot;[deklareerida] uusi klasse, funktsioone, konstante jne&quot;. ja &quot;[k\u00e4ivitab] loogikat koos k\u00f5rvalm\u00f5judega.&quot;<\/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>Hoidke oma tunnid eesm\u00e4rgip\u00e4rased. V\u00e4ltige selliseid asju nagu &#8220;uute klasside, funktsioonide, konstantide jms deklareerimine&#8221;. ja &#8220;[k\u00e4ivitab] loogikat koos k\u00f5rvalm\u00f5judega.&#8221;<\/p>\n","protected":false},"author":1,"featured_media":166224,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718],"tags":[1165],"class_list":["post-229188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229188","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=229188"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229188\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/166224"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}