{"id":229159,"date":"2022-11-08T12:29:00","date_gmt":"2022-11-08T09:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229159"},"modified":"2022-11-09T05:46:00","modified_gmt":"2022-11-09T02:46:00","slug":"klass_exists-vaeltimine-objektorienteeritud-wordpressi-koodis","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/klass_exists-vaeltimine-objektorienteeritud-wordpressi-koodis\/","title":{"rendered":"Klass_exists v\u00e4ltimine objektorienteeritud WordPressi koodis"},"content":{"rendered":"\n<p>Kui kirjutate WordPressi jaoks objektorienteeritud koodi (tavaliselt pistikprogrammide kontekstis), puutute enne klassi l\u00e4htestamist t\u00f5en\u00e4oliselt kokku class_exists kontrolliga. Kuid me peaksime praegusel hetkel hakkama suures osas oma koodis v\u00e4ltima class_exists&#8217;i (m\u00f5ne erandiga, mida ma allpool kirjeldan).<\/p>\n<p>Olenevalt kasutatavast PHP versioonist on see m\u00f5istlik. V\u00f5i tegi seda omal ajal. PHP 5.3.0 seisuga pole see vajalik. Selle asemel on parem tava kasutada nimeruume.<\/p>\n<h2>Klassi_eksisteerimise v\u00e4ltimine<\/h2>\n<p><a href=\"https:\/\/codex.wordpress.org\/Template:Server_requirements\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Sellel lehel<\/a> n\u00e4ete k\u00f5iki WordPressi erinevate versioonide n\u00f5udeid, \u00a0nii et kui t\u00f6\u00f6tate WordPressi p\u00e4randversioonidega, v\u00f5ib kogu class_exists kontroll olla seda v\u00e4\u00e4rt.<\/p>\n<p>Siiski <a href=\"https:\/\/wordpress.org\/about\/requirements\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on oluline m\u00e4rkus<\/a> :<\/p>\n<blockquote>\n<p>M\u00e4rkus. Kui kasutate p\u00e4randkeskkonda, kus teil on ainult vanemad PHP v\u00f5i MySQL versioonid, t\u00f6\u00f6tab WordPress ka versioonidega PHP 5.2.4+ ja MySQL 5.0+, kuid need versioonid on j\u00f5udnud ametliku eluea l\u00f5ppu ja seet\u00f5ttu <strong>v\u00f5ivad teie saidil olla turvan\u00f5rkused<\/strong>.<\/p>\n<\/blockquote>\n<p>Kuid enamiku jaoks toetavad kaasaegsed hostimiskeskkonnad v\u00e4hemalt PHP 5.3.0, kui mitte k\u00f5rgemat versiooni, ja seet\u00f5ttu ei pea me kasutama class_existsi.<\/p>\n<p>Sellegipoolest ei ole haruldane n\u00e4ha midagi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/445ea17547797672a2b8bdfc4fd607da#file-00-class-exists-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sellist<\/a> :<\/p>\n<pre><code>&lt;?php\n\nif (! class_exists( 'My_Unique_Class')) {\n class My_Unique_Class {\n   \/\/ class implementation\n }\n}\n<\/code><\/pre>\n<p>V\u00f5i <a href=\"https:\/\/gist.github.com\/tommcfarlin\/445ea17547797672a2b8bdfc4fd607da#file-01-class-exists-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">niimoodi<\/a> :<\/p>\n<pre><code>&lt;?php\n\nif (class_exists( 'My_Unique_Class')) {\n  return;\n}\n\nclass My_Unique_Class {\n   \/\/ class implementation\n}\n<\/code><\/pre>\n<p>Aastaid tagasi kirjutasin ka sellise koodi. M\u00f5nikord oli selleks liides juba olemasoleva koodibaasiga. Muul ajal oli see sellep\u00e4rast, et ma ei teadnud paremat. Asi on selles, et sellest on saanud midagi, mida n\u00e4eme WordPressi-p\u00f5hises koodis, kui me ei pea seda kasutama.<\/p>\n<p>Tegelikult v\u00e4idan, et me ei peaks seda enam kasutama.<\/p>\n<p>Aga mida rohkem koodi kirjutad ja mida rohkem koodi loed, seda rohkem \u00f5pid, eks? See on osa nimeruumide ja automaatse laadimise p\u00f5hjusest.<\/p>\n<\/p>\n<p>Niisiis, kuidas oleks \u00fclaltoodud kood kirjutatud?<\/p>\n<p>V\u00f5ib-olla <a href=\"https:\/\/gist.github.com\/tommcfarlin\/445ea17547797672a2b8bdfc4fd607da#file-02-namespace-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace TomMcFarlin;\n\nclass My_Unique_Class {\n  \/\/ class implementation\n}\n<\/code><\/pre>\n<p>Siiski tekitab see m\u00f5nes k\u00fcsimuse: kuidas aitavad nimeruumid klassi_eksisteerimise asemel kasutada?<\/p>\n<p>Ideaalis, kui sama klass eksisteerib nimeruumis, on probleem nimeruumiga. Pidage meeles, et <a href=\"https:\/\/wordpress.mediadoma.com\/et\/nimeruumid-ja-automaatne-laadimine-wordpressis\/\" title=\"v\u00f5ite m\u00f5elda nimeruumile\">v\u00f5ite m\u00f5elda nimeruumile<\/a> nagu unikaalsetest osadest koosnevast paketist. Ja kuna need on ainulaadsed, ei tohiks kunagi olla teist sellist t\u00fckki v\u00f5i selles klassis teist samasugust.<\/p>\n<p>Sel eesm\u00e4rgil proovige klass_exists-kontrollide kasutamise asemel kasutada nimeruume. Muidugi ei \u00fctle ma, et minge tagasi ja muutke kogu kood \u00fcmber \u2013 ma pole seda teinud \u2013, kuid see ei t\u00e4henda, et kood, mille kirjutan v\u00f5i \u00fcle vaatan, sisaldaks selle kasutamist v\u00f5i soovitusi.<\/p>\n<p>See on lihtne muudatus, mis v\u00f5ib aidata koodi h\u00f5lpsamini loetavana, v\u00e4hemate tingimustingimustega (postitus teiseks korraks) ja selle palju paremini organiseerituna hoidmisel.<\/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>Peaksime siinkohal hakkama suures osas oma koodis v\u00e4ltima class_exists&#8217;i (m\u00f5nede eranditega, mida kirjeldan hiljem).<\/p>\n","protected":false},"author":1,"featured_media":166297,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,842,863],"tags":[1165],"class_list":["post-229159","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229159","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=229159"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229159\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/166297"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}