{"id":229008,"date":"2022-11-04T17:16:00","date_gmt":"2022-11-04T14:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229008"},"modified":"2022-11-09T05:09:56","modified_gmt":"2022-11-09T02:09:56","slug":"kiire-prototueuepimine-automaatse-laadimise-tutvustamine","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-automaatse-laadimise-tutvustamine\/","title":{"rendered":"Kiire protot\u00fc\u00fcpimine: automaatse laadimise tutvustamine"},"content":{"rendered":"\n<p>Viimaste postituste jooksul olen l\u00e4binud protsessi, kuidas idee kontseptsioonist protot\u00fc\u00fcbini j\u00f5uda.<\/p>\n<p>T\u00f5si, on asju, mida v\u00f5iksite muuta (ja on asju, mida ma muudaksin seoses tundide korraldamisega). Kuid sarja m\u00f5te ei ole l\u00e4bi k\u00e4ia k\u00f5ik erinevad objektorienteeritud tehnikad, mida saab lahenduse loomiseks kasutada.<\/p>\n<p>Selle asemel on vaja v\u00f5tta protot\u00fc\u00fcp ja muuta see millekski veidi professionaalsemaks. \u00dcks asi on siiski veel, mida peame tegema.<\/p>\n<p>Praegu kaasame k\u00f5ik failid n\u00f5utavate avalduste kaudu. Ja see t\u00f6\u00f6tab v\u00e4ikeste failide puhul h\u00e4sti, kuid automaatse laadimise kasutuselev\u00f5tt koos nimeruumidega v\u00f5ib muuta rakenduse veelgi puhtamaks.<\/p>\n<p>Ja seda me teemegi.<\/p>\n<h3>Tutvustame automaatset laadimist<\/h3>\n<p>Tuletage meelde varasemat postitust (kui olete seda lugenud), et automaatne laadimine on lihtne idee:<\/p>\n<p>K\u00f5lab suurep\u00e4raselt, eks? Kuid on hoiatus: peate kirjutama automaatlaaduri. PHP ei saa sellest \u00fcksi aru.<\/p>\n<p>Ja see on p\u00f5hjus, miks ma f\u00e4nnan seda, et meie nimeruumid j\u00e4rgiksid ka \u00fchtset kataloogistruktuuri: kui s\u00f5elute nimeruumi ja faili nime, on faili tee koostamine ja selle automaatne laadimine suhteliselt lihtne.<\/p>\n<p>K\u00f5lab segane? K\u00f5igepealt vaatame, kuhu me kataloogistruktuuri automaatlaaduri paigutame:<\/p>\n<p>J\u00e4rgmisena v\u00e4rskendage oma pistikprogrammi alglaadimisfaili nii, et see <a href=\"https:\/\/gist.github.com\/tommcfarlin\/4f5087613f01dcb35b7fb5e79c69401d#file-00-plugin-bootstrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vajaks ainult automaatlaaduri faili<\/a>.<\/p>\n<pre><code>&lt;?php\n\/**\n * Three Recent Posts\n *\n * @package     TRP\n * @author      Tom McFarlin\n * @copyright   2017 Tom McFarlin\n * @license     MIT\n *\n * @wordpress-plugin\n * Plugin Name: Three Recent Posts\n * Plugin URI:  https:\/\/tommcfarlin.com\/three-recent-posts\/\n * Description: Displays the three mot recent posts in your post editor screen.\n * Version:     1.0.0\n * Author:      Tom McFarlin\n * Author URI:  https:\/\/tommcfarlin.com\n * Text Domain: three-recent-posts\n * License:     GPL\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\/\n\nnamespace McFarlinTRP;\nuse McFarlinTRPDisplayMeta_Box;\n\n\/\/ Import the autoloader.\ninclude_once 'Includes\/autoload.php';\n\nadd_action( 'add_meta_boxes', __NAMESPACE__. 'trp_start' );\n\/**\n * Starts the plugin.\n *\/\nfunction trp_start() {\n\n    $meta_box = new Meta_Box( dirname( __FILE__) );\n    $meta_box-&gt;init();\n}\n<\/code><\/pre>\n<p>Loomulikult vajame failide laadimiseks automaatset laadijat. P\u00f5him\u00f5tteliselt toimib see j\u00e4rgmiselt:<\/p>\n<ol>\n<li>eraldage sissetuleva faili nime komponendid (nt kataloogi tee ja failinimi),<\/li>\n<li>asendage allkriipsud sidekriipsudega, et veenduda, et fail j\u00e4rgib klassi failinime struktuuri,<\/li>\n<li>alustage t\u00e4ielikult kvalifitseeritud tee nime koostamist (mis on kataloog, failinimi jne),<\/li>\n<li>itereerige l\u00e4bi nimeruumi kuni klassi nimeni ja looge failile t\u00e4ielik nimi,<\/li>\n<li>lisada see projekti.<\/li>\n<\/ol>\n<p>See on otsekohene, kas pole? Kui j\u00e4rgite \u00fchtset nimeruumi, kataloogi, klassi nime ja failinimede andmise skeemi, saate sama automaatlaadurit k\u00f5igis projektides uuesti kasutada.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/4f5087613f01dcb35b7fb5e79c69401d#file-00-autoload-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Siin on koopia automaatlaadurist<\/a>, mida ma kasutan ja lisan selle peaaegu igasse kasutatavasse projekti. N\u00e4ete, et see j\u00e4rgib t\u00e4pselt \u00fclalkirjeldatut:<\/p>\n<pre><code>&lt;?php\n\/**\n * Automatically loads the specified file.\n *\n * @package McFarlinTFP\n *\/\n\nnamespace McFarlinTFP;\n\n\/**\n * Automatically loads the specified file.\n *\n * Examines the fully qualified class name, separates it into components, then creates\n * a string that represents where the file is loaded on disk.\n *\n * @package McFarlinTFP;\n *\/\nspl_autoload_register(function( $filename) {\n\n    \/\/ First, separate the components of the incoming file.\n    $file_path = explode( '', $filename );\n\n    \/\/ Get the last index of the array. This is the class we're loading.\n    if (isset( $file_path[ count( $file_path) - 1 ])) {\n\n        $class_file = strtolower(\n            $file_path[ count( $file_path) - 1 ]\n        );\n\n        \/**\n         * The classname has an underscore, so we need to replace it\n         * with a hyphen for the file name.\n         *\/\n        $class_file = str_ireplace( '_', '-', $class_file );\n        $class_file = \"class-$class_file.php\";\n    }\n\n    \/**\n     * Find the fully qualified path to the class file by iterating through the $file_path array.\n     * We ignore the first index since it's always the top-level package. The last index is always\n     * the file so we append that at the end.\n     *\/\n    $fully_qualified_path = trailingslashit(\n        dirname(\n            dirname( __FILE__)) );\n\n    \/**\n     * We start at the second index of the namespace because our directory\n     * structure does not include 'McFarlin\/TRP'.\n     *\/\n    for ($i = 2; $i &lt; count( $file_path) - 1; $i++) {\n\n        $dir = strtolower( $file_path[ $i ] );\n        $fully_qualified_path .= trailingslashit( $dir );\n    }\n    $fully_qualified_path .= $class_file;\n\n    \/\/ Now we include the file.\n    if (file_exists( $fully_qualified_path)) {\n        include_once( $fully_qualified_path );\n    }\n});<\/code><\/pre>\n<p>Ja sellega on pistikprogramm pakitud versioonile 1.0.0. Saate seda <a href=\"https:\/\/github.com\/tommcfarlin\/three-recent-posts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vaadata GitHubis<\/a> (nii s\u00f5na otseses m\u00f5ttes kui ka lihtsalt \u00fclevaatamiseks). Ja loodetavasti on see aidanud WordPressi kontseptsiooni raames kiirelt protot\u00fc\u00fcpimiselt kontseptsioonini j\u00f5uda.<\/p>\n<h2>Sarja postitused<\/h2>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-wordpressiga-kontseptsioonist-pistikprogrammini\/\" title=\"Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsioonist pistikprogrammini\">Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsioonist pistikprogrammini<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-wordpressiga-kontseptsiooni-analueues\/\" title=\"Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsiooni anal\u00fc\u00fcs\">Kiire protot\u00fc\u00fcpimine WordPressiga: kontseptsiooni anal\u00fc\u00fcs<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiire-prototueuepimine-prototueuep-koodiks-1-osa\/\" title=\"Kiire protot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 1. osa\">Kiire protot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 1. osa<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kiirprototueuepimine-prototueuep-koodiks-2-osa\/\" title=\"Kiirprotot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 2. osa\">Kiirprotot\u00fc\u00fcpimine: protot\u00fc\u00fcp koodiks, 2. osa<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/introducing-autoloading\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kiire protot\u00fc\u00fcpimine: automaatse laadimise tutvustamine<\/a><\/li>\n<\/ol>\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>Automaatse laadimise kasutuselev\u00f5tt koos nimeruumidega WordPressi pistikprogrammis v\u00f5ib muuta rakenduse veelgi puhtamaks.<\/p>\n","protected":false},"author":1,"featured_media":220982,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,916,842],"tags":[1165],"class_list":["post-229008","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-muud","category-opetused","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229008","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=229008"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229008\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/220982"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}