{"id":230638,"date":"2022-12-14T17:05:00","date_gmt":"2022-12-14T14:05:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230638"},"modified":"2022-12-14T17:05:36","modified_gmt":"2022-12-14T14:05:36","slug":"wordpressi-vidinad-alustades-standarditest","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-alustades-standarditest\/","title":{"rendered":"WordPressi vidinad: alustades standarditest"},"content":{"rendered":"\n<p>Selle seeria eesm\u00e4rk on hakata WordPressi kontekstis objektorienteeritud programmeerimisega t\u00f6\u00f6tamisse s\u00fcgavamalt sukelduma.<\/p>\n<p>Ja kuna WordPressi vidinate API on \u00fcks API-dest, mis kasutab objektorienteeritud tavasid, on see loogiline koht alustamiseks. Lisaks annab see meile m\u00f5ned p\u00f5hilised tehnikad, mida saame kasutada tulevases t\u00f6\u00f6s, kui n\u00e4eme, kuidas tulevastes seeriates WordPressis rohkem objektorienteeritud projekte ehitada.<\/p>\n<p>Siiani oleme k\u00e4sitlenud j\u00e4rgmist.<\/p>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-objektorienteeritud-laehenemisviis\/\" title=\"WordPressi vidinad: objektorienteeritud l\u00e4henemine\">WordPressi vidinad: objektorienteeritud l\u00e4henemine<\/a>. Vidinate API pakub kindlat lakmustesti ja n\u00e4idet selle kohta, kuidas WordPressis objektorienteeritud programmeerimist alustada.<\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-objektorienteeritud-programmeerimise-tuvastamine\/\" title=\"WordPressi vidinad: objektorienteeritud programmeerimise tuvastamine\">WordPressi vidinad: objektorienteeritud programmeerimise tuvastamine<\/a>. Eesm\u00e4rk on varustada teid k\u00f5ige vajalikuga objektorienteeritud tavade tuvastamiseks.<\/li>\n<\/ol>\n<p>Kui te ei j\u00f5ua j\u00e4rele, on n\u00fc\u00fcd suurep\u00e4rane aeg seda teha. Ja kui on, siis m\u00e4letate eelmisest postitusest, mille l\u00f5petasime j\u00e4rgmise m\u00e4rkusega:<\/p>\n<blockquote>\n<p>See t\u00e4hendab, et vaatame uuesti <strong><a href=\"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi vidina katlaplaati<\/a><\/strong> ja muudan selle praeguses seisukorras, et v\u00f5tta kasutusele kaasaegsemad PHP-standardid.<\/p>\n<\/blockquote>\n<p>WordPress Widget Boilerplate&#8217;i v\u00e4rskendamise alustamiseks nimetatud standardite j\u00e4rgimiseks peame tegema m\u00f5ned asjad:<\/p>\n<ol>\n<li>luua olemasolevast katlaplaadist haru,<\/li>\n<li>installige koodikvaliteedi t\u00f6\u00f6riistad,<\/li>\n<li>veenduge, et meie IDE on \u00f5igesti seadistatud,<\/li>\n<li>ja alustage koodi \u00fcmberkujundamist nimetatud standardite j\u00e4rgi.<\/li>\n<\/ol>\n<p>Ja seda me selle postitusega tegema hakkamegi.<\/p>\n<h2>Alustades standarditest<\/h2>\n<p>Kui olete selle saidi liige olnud m\u00f5nda aega, siis teate, et eelistan kasutada Visual Studio koodi. Kui ei, siis on mul <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/visual-studio-code\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">terve rida artikleid, mis on<\/a><\/strong> p\u00fchendatud selle kasutamisele (ja seega ka sellele, kuidas me seda selle postituste seeria jooksul kasutame).<\/p>\n<p>Ja kui teid huvitab kodeerimisstandardite, silumise, IDE-de, arenduskeskkondade jms katvus, vaadake <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">The Independent WordPress Developerit<\/a><\/strong>.<\/p>\n<p>Siiski eeldan, et kui loete seda, siis olete \u00fclaltoodud materjali l\u00e4bi lugenud v\u00f5i olete rahul kogu \u00fclaltoodud materjaliga.<\/p>\n<p>Seda \u00f6eldes alustame.<\/p>\n<h3>Hoidla allalaadimine<\/h3>\n<p>Esimene asi, mida soovite teha, on hoidla koopia kloonimine. Eelistan seda teha k\u00e4surea kaudu.<\/p>\n<p>Lisaks arvan ma, et seda tasub teha <strong><a href=\"https:\/\/wordpress.mediadoma.com\/et\/pluginate-ja-teemade-arendamine-wordpressi-pagasiruumi-vastu\/\" title=\"ka WordPressi uusima versiooni puhul\">ka WordPressi uusima versiooni puhul<\/a><\/strong>. Kui teil pole Subversioni WordPressi p\u00f5hikoopia koopiat, saate lugeda, kuidas seda seadistada siit. see on aga t\u00e4iesti vabatahtlik. Saate seda \u00f5petust \u00fclej\u00e4\u00e4nud osaga suurep\u00e4raselt j\u00e4lgida mis tahes WordPressi versiooniga, mida soovite.<\/p>\n<p>Selleks<\/p>\n<ol>\n<li>Veenduge, et olete oma WordPressi installi <strong>pistikprogrammide kataloogis<\/strong><\/li>\n<li>Ja seej\u00e4rel sisestage j\u00e4rgmised k\u00e4sud oma terminali koopiasse<\/li>\n<\/ol>\n<pre><code>$ <\/code><\/pre>\n<p>See loob teie <strong>pistikprogrammide kataloogi kataloogi<\/strong> <strong>WordPress-Widget-Boilerplate<\/strong>. Selle juurde p\u00e4\u00e4sete lihtsalt tippides:<\/p>\n<pre><code>$ cd WordPress-Widget-Boilerplate<\/code><\/pre>\n<p>Hoidla kloonimise tulemused peaksid v\u00e4lja n\u00e4gema umbes sellised:<\/p>\n<p>J\u00e4rgmiseks peate veenduma, et kasutate minu loodud arendusharu<strong>.<\/strong> Seda on t\u00f5esti lihtne teha. Aga enne kui me seda teeme, miks mitte seadistada projekt Visual Studios?<\/p>\n<h3>Visual Studio koodi seadistamine<\/h3>\n<p>Projekti Visual Studio Code&#8217;is seadistamise sammud on lihtsad:<\/p>\n<ol>\n<li>Lohistage Boilerplate&#8217;i kataloog IDE-sse,<\/li>\n<li>Avage integreeritud terminal,<\/li>\n<li>Vahetage oksad<\/li>\n<\/ol>\n<p>Nii nagu ma eespool tegin, annan ekraanilekande selle kohta, kuidas seda k\u00f5ike teha. Kataloogi lohistamine Visual Studio Code&#8217;i peaks olema piisavalt lihtne, kuid harude vahetamine k\u00e4sureal v\u00f5ib olla veidi erinev.<\/p>\n<p>Esiteks seadistage projekt Visual Studio Code&#8217;is:<\/p>\n<\/p>\n<p>Pange t\u00e4hele, et ma avan ka integreeritud terminali, vajutades kiirklahvi CMD+P (kasutan macOS-is, nii et teie otsetee v\u00f5ib olla erinev). Seej\u00e4rel sisestan k\u00e4su arendusharu <strong>kontrollimiseks<\/strong>.<\/p>\n<p>Kui olete seda teinud, peaks teie kohalik hoidla vahetama arendusharu vastu. Saate kinnitada, et see on haru, mille juures te t\u00f6\u00f6tate, tippides:<\/p>\n<pre><code>$ git branch<\/code><\/pre>\n<p>Ja siis vaata \u00fcle terminali sisu. Rangelt v\u00f5ttes tuleks esile t\u00f5sta <strong>arendamist .<\/strong><\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161604-61e7262e24cf5.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-161604-61e7262e24cf5.png\" alt=\"WordPressi vidinad: alustades standarditest\"><\/a><\/p>\n<p>Siinkohal tutvustame projekti m\u00f5ned uued failid. Selle \u00f5petuse l\u00f5pus saate moodustada <strong>t\u00f5mbe<\/strong>, et hankida k\u00f5ik, mida ma siin dokumenteerima hakkan. Kuid kuna meie tegevuse eesm\u00e4rk on kahekordne, on oluline veenduda, et teeme seda \u00f5iges j\u00e4rjekorras, sest esimene samm on midagi, mida ma praegu kasutan igas WordPressi projektis.<\/p>\n<p>Nii et seda \u00f6eldes, vaatame.<\/p>\n<h3>Helilooja ja koodi kvaliteet<\/h3>\n<p>Esimene asi, mida mulle meeldib teha, on koodikvaliteedi j\u00f5ustamiseks t\u00f6\u00f6riistade seeria seadistamine. See saavutatakse erinevate Composeri pakettide abil. Need sisaldavad:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a>. PHP koodikvaliteedi t\u00f6\u00f6riist. \u00c4rge alahinnake selgust ja seda, mil m\u00e4\u00e4ral see hoidla on teavet t\u00e4is. Kui j\u00e4\u00e4te kunagi m\u00f5ne muu siin mainitud t\u00f6\u00f6riistaga j\u00e4nni, vaadake esmalt l\u00e4bi selle hoidla dokumentatsioon.<\/li>\n<li><a href=\"https:\/\/github.com\/FriendsOfPHP\/PHP-CS-Fixer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CS parandaja<\/a>. T\u00f6\u00f6riist PHP kodeerimisstandardite probleemide automaatseks lahendamiseks.<\/li>\n<li><strong><a href=\"https:\/\/github.com\/JakubOnderka\/PHP-Parallel-Lint\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP Parallel Lint<\/a><\/strong>. See t\u00f6\u00f6riist kontrollib PHP-failide s\u00fcntaksit kiiremini kui seeriakontroll uhkema v\u00e4ljundiga.<\/li>\n<li><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a>. See utiliit kasutab antud PHP l\u00e4htekoodi baasi ja otsib selles allikas mitmeid v\u00f5imalikke probleeme<\/li>\n<li><a href=\"https:\/\/github.com\/nikic\/PHP-Parser\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP parser<\/a>. Parser on kasulik <a href=\"https:\/\/en.wikipedia.org\/wiki\/Static_program_analysis\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">staatiliseks anal\u00fc\u00fcsiks<\/a>, koodiga manipuleerimiseks ja p\u00f5him\u00f5tteliselt k\u00f5ikidele muudele programmiliselt koodiga tegelevatele rakendustele.<\/li>\n<li><a href=\"https:\/\/github.com\/Ocramius\/ProxyManager\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Puhverserveri haldur<\/a>. Selle teegi eesm\u00e4rk on pakkuda abstraktsiooni mitmesuguste puhverserveri klasside genereerimiseks.<\/li>\n<\/ul>\n<p>Ma tahan olla selge kahest asjast:<\/p>\n<ol>\n<li>\u00dclaltoodud t\u00f6\u00f6riistad on miinimum, mida ma kasutan, ja t\u00f5en\u00e4oliselt n\u00e4ete, et kasutan tulevikus t\u00e4iendavaid t\u00f6\u00f6riistu,<\/li>\n<li>\u00fclaltoodud t\u00f6\u00f6riistad aitavad enne koodi hoidlasse kontrollimist j\u00f5ustada koodi kvaliteedireegleid. Selle eesm\u00e4rk on t\u00e4iendada teie IDE seadistust.<\/li>\n<\/ol>\n<p>Nende t\u00f6\u00f6riistade seadistamiseks ja projektis k\u00e4itamiseks peame looma faili <strong>composer.json, mis n\u00e4eb v\u00e4lja<\/strong> <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c75e37f2ca15035013477c77ac3a18a6#file-00-composer-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmine<\/a><\/strong> :<\/p>\n<pre><code>{\n    \"name\": \"wordpress-widget-boilerplate\/wordpress-widget-boilerplate\",\n    \"description\": \"An organized, maintainable boilerplate for building widgets using WordPress best practices.\",\n    \"type\": \"wordpress-plugin\",\n    \"license\": \"GPL-3.0-or-later\",\n    \"homepage\": \"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\",\n    \"authors\": [\n      {\n        \"name\": \"Tom McFarlin\",\n        \"email\": \"tom@pressware.co\",\n        \"homepage\": \"https:\/\/pressware.co\"\n      }\n    ],\n    \"support\": {\n      \"issues\": \"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\/issues\"\n    },\n    \"config\": {\n      \"preferred-install\": \"dist\",\n      \"platform\": {\n          \"php\": \"7.1\"\n      }\n    },\n    \"repositories\": [\n      {\n        \"type\": \"composer\",\n        \"url\": \"https:\/\/wpackagist.org\"\n      }\n    ],\n    \"require\": {\n      \"php\": \"7.1\",\n      \"composer\/installers\": \"^1.4\"\n    },\n    \"require-dev\": {\n        \"friendsofphp\/php-cs-fixer\": \"^2.13.1\",\n        \"jakub-onderka\/php-parallel-lint\": \"^1.0.0\",\n        \"phpmd\/phpmd\": \"^v2.6.0\",\n        \"nikic\/php-parser\": \"^4.0\",\n        \"ocramius\/proxy-manager\": \"^2.0.0\",\n        \"phpro\/grumphp\": \"^0.13.1\"\n    },\n    \"scripts\": {\n      \"test\": [\n        \".\/vendor\/bin\/grumphp run\"\n      ]\n    },\n    \"minimum-stability\": \"stable\"\n  }<\/code><\/pre>\n<p>Pidage meeles, et saate selle postituse l\u00f5pus k\u00e4sitsi alla t\u00f5mmata. Kui aga soovite teksti j\u00e4lgida, tehke seda vabalt k\u00e4sitsi. Ma ei tahaks sind kunagi sellest heidutada. \ud83d\ude42<\/p>\n<p>Kui olete\u00a0 faili <strong>composer.json<\/strong> loonud, peate veenduma, et k\u00e4ivitate terminalist j\u00e4rgmise k\u00e4su:<\/p>\n<pre><code>$ composer install<\/code><\/pre>\n<p>See v\u00f5ib v\u00f5tta aega; kuid kui see on tehtud, peaks teile esitama j\u00e4rgmise teate:<\/p>\n<blockquote>\n<p>Vaata ette! GrumPHP nuusutab teie kohustusi!<\/p>\n<\/blockquote>\n<p>Kuivk\u00e4ivitamiseks sisestage terminali j\u00e4rgmine k\u00e4sk:<\/p>\n<pre><code>$ vendor\/bin\/grumphp run<\/code><\/pre>\n<p>S\u00f5ltuvalt sellest, kuidas te projektiga t\u00f6\u00f6tate, v\u00f5ite n\u00e4ha v\u00e4ljundit, mis n\u00e4eb v\u00e4lja umbes selline:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161604-61e72631d3f32.gif\" 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-161604-61e72631d3f32.gif\" alt=\"WordPressi vidinad: alustades standarditest\"><\/a><\/p>\n<p>Aga t\u00f6\u00f6d on veel. Nimelt peame:<\/p>\n<ul>\n<li>v\u00e4rskendage meie <strong>.gitignore-<\/strong> faili,<\/li>\n<li>tutvustada GrumPHP konfiguratsiooni<\/li>\n<li>tutvustada PHPMD konfiguratsiooni,<\/li>\n<li>tutvustada PHPCS-i konfiguratsiooni,<\/li>\n<li>l\u00f5puks restruktureerige katlaplaadi kataloogistruktuur.<\/li>\n<\/ul>\n<p>Selles postituses p\u00fc\u00fcame teha k\u00f5ike kuni viimase etapini.<\/p>\n<h3>Ignoreeri faili v\u00e4rskendamine<\/h3>\n<p>Esiteks ei taha me siduda tarnija kataloogi ega helilooja lukufaili. Neid saab luua alati, kui kasutaja laadib kataloogi alla. Need v\u00f5ivad kergesti s\u00fcnkroonist v\u00e4lja kukkuda ja lisavad projekti kataloogile tohutult suurust.<\/p>\n<p>Selleks peaks teie <strong>gitignore&#8217;i<\/strong> fail v\u00e4lja n\u00e4gema <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c75e37f2ca15035013477c77ac3a18a6#file-01-gitignore-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmine<\/a><\/strong> :<\/p>\n<pre><code>*.DS_Store\n*.log\nwp-config.php\nwp-content\/advanced-cache.php\nwp-content\/backup-db\/\nwp-content\/backups\/\nwp-content\/blogs.dir\/\nwp-content\/cache\/\nwp-content\/upgrade\/\nwp-content\/uploads\/\nwp-content\/mu-plugins\/\nwp-content\/wp-cache-config.php\nwp-content\/plugins\/hello.php\n\n\/.htaccess\n\/license.txt\n\/readme.html\n\/sitemap.xml\n\/sitemap.xml.gz\n\nvendor\/\ncomposer.lock<\/code><\/pre>\n<p>See k\u00e4sib pistikprogrammil ignoreerida k\u00f5ike peale selle, mis asub pistikprogrammide kataloogi juurtes (ja m\u00f5nes v\u00f5imalikus kataloogis, mille me loome) ning m\u00f5ningaid p\u00f5hifaile, mida oleme harjunud WordPressi installides n\u00e4gema.<\/p>\n<p>Osa sellest, mida n\u00e4ete, nagu <strong>wp-config.php<\/strong> v\u00f5i <strong>wp-content\/backups<\/strong>, mida te t\u00f5en\u00e4oliselt kunagi pistikprogrammi kontekstis ei n\u00e4e, kuid need on standardsed WordPressi ignoreerivad juhised, mida mulle meeldib k\u00e4ep\u00e4rast hoida.<\/p>\n<p>M\u00e4rkate, et olen faili allossa lisanud ka <strong>hankija\u00a0 ja helilooja lukufaili.<\/strong><\/p>\n<h3>GrumPHP seadistamine<\/h3>\n<p>GrumPHP saab palju \u00e4ra teha ja kui veetsite enne selle lugemist hoidlast aega uurides, siis t\u00f5en\u00e4oliselt teate seda. siiski kavatsen hoida selle v\u00f5imalikult lahjana, nii et see annab juhised, mida ta vajab meie kasutatavate t\u00f6\u00f6riistade jaoks, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c75e37f2ca15035013477c77ac3a18a6#file-02-grumphp-yml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ja ei midagi muud<\/a><\/strong>.<\/p>\n<pre><code>parameters:\n    git_dir: .git\n    bin_dir: vendor\/bin\n    process_timeout: 120\n    tasks:\n      securitychecker:\n      composer:\n      jsonlint:\n      xmllint:\n      yamllint:\n      phplint:\n        exclude:\n          - vendor\/\n      phpcs:\n        metadata:\n          priority: 200\n      phpcsfixer2:\n        allow_risky: true\n        config: '.php_cs.dist'\n        metadata:\n          priority: 300\n      phpparser:\n        visitors:\n          forbidden_function_calls:\n            blacklist:\n              - \"exit\"\n              - \"var_dump\"\n      phpversion:\n        project: '7.1'\n      phpmd:\n        exclude: ['vendor']\n        ruleset: ['phpmd.xml']<\/code><\/pre>\n<p>L\u00fchidalt \u00f6eldes peab see l\u00e4bi viima mitmesuguseid kontrolle:<\/p>\n<ul>\n<li>turvalisus,<\/li>\n<li>helilooja,<\/li>\n<li>JSON,<\/li>\n<li>XML,<\/li>\n<li>Jaml,<\/li>\n<li>PHP,<\/li>\n<li>PHPCS,<\/li>\n<li>PHP parser,<\/li>\n<li>PHPMD,<\/li>\n<li>ja veel.<\/li>\n<\/ul>\n<p>Kui oleme k\u00f5ik muu seadistamise l\u00f5petanud, n\u00e4itan teile kindlasti, kuidas see k\u00f5ik kokku sobib. Kuid k\u00f5igepealt l\u00f5petame \u00fclej\u00e4\u00e4nud utiliitide konfigureerimise.<\/p>\n<h3>PHPCS<\/h3>\n<p>See kasutab kahte eraldi faili \u2013 <strong>dist<\/strong> &#8211; faili ja <strong>XML-<\/strong> faili \u2013, millest iga\u00fcks teenib erinevaid, kuigi v\u00e4ga kasulikke eesm\u00e4rke.<\/p>\n<p>Esimene fail <strong>php_cs.dist<\/strong>, mida n\u00e4ete hoidlas selle postituse l\u00f5pus, sisaldab p\u00e4ist, mida rakendatakse meie projekti k\u00f5ikidele PHP-failidele. Samuti j\u00f5ustab see m\u00f5ned erinevad reeglid, mis parandavad koodi kvaliteeti.<\/p>\n<p>Reeglid on iseenesestm\u00f5istetavad ja n\u00e4ete, mida see j\u00f5ustab, vaadates lihtsalt l\u00e4bi iga <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c75e37f2ca15035013477c77ac3a18a6#file-03-phpcs-dist\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">m\u00e4\u00e4ratletud<\/a><\/strong> reegli .<\/p>\n<pre><code>&lt;?php\n\n$header = &lt;&lt;&lt;'EOF'\nThis file is part of the WordPress Widget Boilerplate\n(c) Tom McFarlin &lt;tom@tommcfarlin.com&gt;\n\nThis source file is subject to the GPL license that is bundled\nwith this source code in the file LICENSE.\nEOF;\n\nreturn PhpCsFixerConfig::create()\n  -&gt;setRiskyAllowed(true)\n  -&gt;setRules([\n    '@PHP56Migration' =&gt; true,\n    '@Symfony' =&gt; true,\n    '@Symfony:risky' =&gt; true,\n    'align_multiline_comment' =&gt; true,\n    'array_syntax' =&gt; ['syntax' =&gt; 'short'],\n    'blank_line_before_statement' =&gt; true,\n    'combine_consecutive_issets' =&gt; true,\n    'combine_consecutive_unsets' =&gt; true,\n    \/\/ one should use PHPUnit methods to set up expected exception instead of annotations\n    'general_phpdoc_annotation_remove' =&gt; ['annotations' =&gt; ['expectedException', 'expectedExceptionMessage', 'expectedExceptionMessageRegExp']],\n    'header_comment' =&gt; ['header' =&gt; $header],\n    'heredoc_to_nowdoc' =&gt; true,\n    'list_syntax' =&gt; ['syntax' =&gt; 'long'],\n    'method_argument_space' =&gt; ['ensure_fully_multiline' =&gt; true],\n    'method_chaining_indentation' =&gt; false,\n    'no_extra_consecutive_blank_lines' =&gt; ['tokens' =&gt; ['break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block']],\n    'no_null_property_initialization' =&gt; true,\n    'no_short_echo_tag' =&gt; true,\n    'no_unneeded_curly_braces' =&gt; true,\n    'no_unneeded_final_method' =&gt; true,\n    'no_unreachable_default_argument_value' =&gt; true,\n    'no_useless_else' =&gt; true,\n    'no_useless_return' =&gt; true,\n    'ordered_class_elements' =&gt; true,\n    'ordered_imports' =&gt; true,\n    'php_unit_construct' =&gt; true,\n    'php_unit_test_class_requires_covers' =&gt; true,\n    'php_unit_dedicate_assert' =&gt; true,\n    'phpdoc_add_missing_param_annotation' =&gt; true,\n    'phpdoc_order' =&gt; true,\n    'phpdoc_types_order' =&gt; ['null_adjustment' =&gt; 'always_last'],\n    'semicolon_after_instruction' =&gt; true,\n    'single_line_comment_style' =&gt; true,\n    'visibility_required' =&gt; ['const', 'property', 'method'],\n    'yoda_style' =&gt; true,\n  ])\n  -&gt;setFinder(\n    PhpCsFixerFinder::create()\n      -&gt;exclude(__DIR__. '\/vendor\/*')\n      -&gt;in([\n        __DIR__. '\/src'\n      ])) ;<\/code><\/pre>\n<p>J\u00e4rgmisena soovite \u00fclaltoodud faili t\u00e4iendamiseks luua ka XML-faili. Pange t\u00e4hele, et pakutavas failis kasutan seda oma t\u00f6\u00f6s <strong><a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pressware&#8217;is<\/a><\/strong>. Lisaks kinnitab see ka <strong>testide<\/strong> kataloogi.<\/p>\n<p>Praegu pole meil \u00fchtegi \u00fchikutesti kirjutatud, kuid kui otsustate need oma vidinasse lisada, on see valmis neid korralikult k\u00e4sitlema.<\/p>\n<pre><code>&lt;?xml version=\"1.0\"?&gt;\n&lt;ruleset name=\"Pressware\"&gt;\n    &lt;description&gt;Pressware, LLC Coding Standards&lt;\/description&gt;\n\n    &lt;!-- Scan all files in directory --&gt;\n    &lt;file&gt;.\/src&lt;\/file&gt;\n    &lt;file&gt;.\/tests&lt;\/file&gt;\n    &lt;exclude-pattern&gt;.\/tests\/phpunit\/*&lt;\/exclude-pattern&gt;\n    &lt;!-- Scan only PHP files --&gt;\n    &lt;arg name=\"extensions\" value=\"php\"&gt;&lt;\/arg&gt;\n\n    &lt;!-- Show colors in console --&gt;\n    &lt;arg value=\"-colors\"&gt;&lt;\/arg&gt;\n\n    &lt;!-- Show sniff codes in all reports --&gt;\n    &lt;arg value=\"ns\"&gt;&lt;\/arg&gt;\n\n    &lt;!-- Use PSR-2 as a base --&gt;\n    &lt;rule ref=\"PSR2\"&gt;&lt;\/rule&gt;\n    &lt;rule ref=\"Generic.Arrays.DisallowLongArraySyntax.Found\" &gt;&lt;\/rule&gt;\n\n    &lt;!-- Force 2 spaces indentation --&gt;\n    &lt;rule ref=\"Generic.WhiteSpace.ScopeIndent\"&gt;\n        &lt;properties&gt;\n            &lt;property name=\"indent\" value=\"4\"&gt;&lt;\/property&gt;\n            &lt;property name=\"tabIndent\" value=\"false\"&gt;&lt;\/property&gt;\n        &lt;\/properties&gt;\n    &lt;\/rule&gt;\n&lt;\/ruleset&gt;<\/code><\/pre>\n<p>Siin t\u00e4psustan ainult v\u00e4ikese konfiguratsioonikomplekti, kuid ma olen leidnud, et see on minu vajaduste jaoks siiani piisav. Kui avastan rohkem v\u00f5i otsustan rohkem kasutada, v\u00e4rskendan kindlasti tulevaste postituste sisu.<\/p>\n<h3>PHPMD seadistamine<\/h3>\n<p>Ja l\u00f5puks peame konfigureerima PHP Mess Detectori (v\u00f5i PHPMD). \u00d5nneks kasutab see XML-faili, mis kasutab Composeri installitud paketis m\u00e4\u00e4ratletud reeglistikke. K\u00f5ik, mida peame tegema, on viidata konfiguratsioonifailis olevale reeglile.<\/p>\n<p><strong>Teiseks teeme l\u00fchikese muutuja<\/strong> nime jaoks ka v\u00e4ikese v\u00e4listuse, nagu n\u00e4ete <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c75e37f2ca15035013477c77ac3a18a6#file-05-phpmd-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmisest sisust<\/a><\/strong> :<\/p>\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;ruleset\n    name=\"VersionEyeModule rules\"\n    xmlns=\"http:\/\/pmd.sf.net\/ruleset\/1.0.0\"\n    xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n    xsi:schemaLocation=\"http:\/\/pmd.sf.net\/ruleset\/1.0.0 http:\/\/pmd.sf.net\/ruleset_xml_schema.xsd\"\n    xsi:noNamespaceSchemaLocation=\"http:\/\/pmd.sf.net\/ruleset_xml_schema.xsd\"\n&gt;\n    &lt;rule ref=\"rulesets\/cleancode.xml\" &gt;&lt;\/rule&gt;\n    &lt;rule ref=\"rulesets\/codesize.xml\" &gt;&lt;\/rule&gt;\n    &lt;rule ref=\"rulesets\/controversial.xml\" &gt;&lt;\/rule&gt;\n    &lt;rule ref=\"rulesets\/design.xml\" &gt;&lt;\/rule&gt;\n    &lt;rule ref=\"rulesets\/unusedcode.xml\" &gt;&lt;\/rule&gt;\n    &lt;rule ref=\"rulesets\/naming.xml\"&gt;\n        &lt;exclude name=\"ShortVariable\"&gt;&lt;\/exclude&gt;\n    &lt;\/rule&gt;\n\n    &lt;rule ref=\"rulesets\/naming.xml\/ShortVariable\"\n          since=\"0.2\"\n          message=\"Avoid variables with short names like {0}. Configured minimum length is {1}.\"\n          class=\"PHPMDRuleNamingShortVariable\"\n          externalInfoUrl=\"http:\/\/phpmd.org\/rules\/naming.html#shortvariable\"&gt;\n        &lt;priority&gt;3&lt;\/priority&gt;\n        &lt;properties&gt;\n            &lt;property name=\"minimum\" description=\"Minimum length for a variable, property or parameter name\" value=\"3\"&gt;&lt;\/property&gt;\n            &lt;property name=\"exceptions\" value=\"id,q,w,i,j,v,e,f,fp\" &gt;&lt;\/property&gt;\n        &lt;\/properties&gt;\n    &lt;\/rule&gt;\n&lt;\/ruleset&gt;<\/code><\/pre>\n<p>Ja kui k\u00f5ik need on paigas, peaksime saama GrumPHP-d k\u00e4surealt uuesti k\u00e4ivitada ja omama veidi teistsuguseid tulemusi.<\/p>\n<h3>J\u00e4lle GrumPHP k\u00e4ivitamine<\/h3>\n<p>Sisestage oma terminali j\u00e4rgmine teave:<\/p>\n<pre><code>$ vendor\/bin\/grumphp run<\/code><\/pre>\n<p>Ja sa peaksid n\u00e4gema midagi sellist:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161604-61e726340729e.gif\" 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-161604-61e726340729e.gif\" alt=\"WordPressi vidinad: alustades standarditest\"><\/a><\/p>\n<p>Teised tulemused kui esimesel korral, ah? P\u00f5hjus on selles, et me rikume m\u00f5ningaid reegleid ja standardeid, mis on PHP ja objektorienteeritud arenduse kaasaegne osa.<\/p>\n<p>Ja seda me j\u00e4rgmises postituses \u00e4ra koristame.<\/p>\n<h2>Tulekul<\/h2>\n<p>Kust siis selle objektorienteeritud olemus p\u00e4rineb? Siiani oleme r\u00e4\u00e4kinud vidinate API kasutamisest objektorienteeritud mudelina objektorienteeritud koodi kirjutamiseks WordPressis.<\/p>\n<p>Osa sellest, mida oleme siiani teinud, on olnud t\u00e4pselt see (r\u00e4\u00e4kides selle p\u00f5him\u00f5tetest, vaadates, kuidas see on \u00fcles ehitatud ja palju muud).<\/p>\n<p>Kuid nagu ma selle postituse alguses mainisin, annab koodikvaliteedi t\u00f6\u00f6riistade paigaldamine meile k\u00f5igepealt aluse, mida saame kasutada katlaplaadi taastamiseks (mida peame GrumPHP n\u00e4idatud punase koguse t\u00f5ttu selgelt tegema).<\/p>\n<p>Ja sellest alustame selle sarja j\u00e4rgmises postituses.<\/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>\u00dcks parimaid viise objektorienteeritud programmeerimiseks on alustada standarditest ja omada t\u00f6\u00f6riistu nende j\u00f5ustamiseks.<\/p>\n","protected":false},"author":1,"featured_media":235870,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,863],"tags":[1165],"class_list":["post-230638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230638","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=230638"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230638\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/235870"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}