✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Rapid Prototyping: Esittelyssä automaattinen lataus

16

Muutaman viime postauksen aikana olen käynyt läpi prosessin viedä idea ideasta prototyyppiin.

Myönnettäköön, että on joitain asioita, joita saatat muuttaa (ja on joitain asioita, joita muuttaisin koskien luokkien järjestämistä). Mutta sarjan tarkoitus ei ole käydä läpi kaikkia erilaisia ​​oliotekniikoita, joita voidaan käyttää ratkaisun luomiseen.

Sen sijaan kyse on prototyypin ottamisesta ja sen muuntamisesta joksikin hieman ammattimaisemmaksi. Yksi asia meidän on kuitenkin vielä tehtävä.

Tällä hetkellä sisällytämme kaikki tiedostomme vaadittujen lausuntojen kautta. Ja tämä toimii hyvin pienille tiedostoille, mutta automaattisen latauksen käyttöönotto yhdessä nimiavaruuksien kanssa voi tehdä sovelluksesta entistä puhtaamman.

Ja niin me aiomme tehdä.

Esittelyssä automaattinen lataus

Muista aiemmasta viestistä (jos olet lukenut sen), että automaattinen lataus on yksinkertainen idea:

Kuulostaa hienolta, eikö? Mutta on varoitus: sinun on kirjoitettava automaattinen lataus. PHP ei voi selvittää sitä yksin.

Ja tästä syystä pidän siitä, että nimiavaruksemme noudattavat myös johdonmukaista hakemistorakennetta: Jos jäsennät nimiavaruuden ja tiedoston nimen, on suhteellisen helppoa rakentaa tiedoston polku ja ladata se automaattisesti.

Kuulostaako hämmentävältä? Katsotaanpa ensin, mihin sijoitamme automaattisen latausohjelman hakemistorakenteen suhteen:

Päivitä seuraavaksi laajennuksen bootstrap-tiedosto niin, että se vaatii vain automaattisen lataustiedoston.

<?php
/**
 * Three Recent Posts
 *
 * @package     TRP
 * @author      Tom McFarlin
 * @copyright   2017 Tom McFarlin
 * @license     MIT
 *
 * @wordpress-plugin
 * Plugin Name: Three Recent Posts
 * Plugin URI:  https://tommcfarlin.com/three-recent-posts/
 * Description: Displays the three mot recent posts in your post editor screen.
 * Version:     1.0.0
 * Author:      Tom McFarlin
 * Author URI:  https://tommcfarlin.com
 * Text Domain: three-recent-posts
 * License:     GPL
 * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
 */

namespace McFarlinTRP;
use McFarlinTRPDisplayMeta_Box;

// Import the autoloader.
include_once 'Includes/autoload.php';

add_action( 'add_meta_boxes', __NAMESPACE__. 'trp_start' );
/**
 * Starts the plugin.
 */
function trp_start() {

    $meta_box = new Meta_Box( dirname( __FILE__) );
    $meta_box->init();
}

Tietenkin tarvitsemme automaattisen latausohjelman tiedostojemme lataamiseen. Pohjimmiltaan se toimii seuraavasti:

  1. erota saapuvan tiedoston nimen osat (kuten hakemistopolku ja tiedoston nimi),
  2. korvaa kaikki alaviivat tavuviivoilla varmistaaksesi, että tiedosto noudattaa luokan tiedostonimen rakennetta,
  3. aloita täydellisen polun nimen rakentaminen (joka on hakemisto, tiedoston nimi jne.),
  4. iteroi nimiavaruuden läpi luokan nimeen asti ja rakenna tiedostolle täydellinen nimi,
  5. sisällyttää se projektiin.

Se on suoraan eteenpäin, eikö? Jos noudatat johdonmukaista nimiavaruutta, hakemistoa, luokan nimeä ja tiedostojen nimeämisskeemaa, voit käyttää samaa automaattista latausohjelmaa uudelleen missä tahansa projektissa.

Tässä on kopio automaattisesta latausohjelmasta, jota käytän ja pudotan sen melkein kaikkiin käyttämiini projekteihin. Huomaat, että se noudattaa täsmälleen sitä, mitä yllä on käsitelty:

<?php
/**
 * Automatically loads the specified file.
 *
 * @package McFarlinTFP
 */

namespace McFarlinTFP;

/**
 * Automatically loads the specified file.
 *
 * Examines the fully qualified class name, separates it into components, then creates
 * a string that represents where the file is loaded on disk.
 *
 * @package McFarlinTFP;
 */
spl_autoload_register(function( $filename) {

    // First, separate the components of the incoming file.
    $file_path = explode( '', $filename );

    // Get the last index of the array. This is the class we're loading.
    if (isset( $file_path[ count( $file_path) - 1 ])) {

        $class_file = strtolower(
            $file_path[ count( $file_path) - 1 ]
        );

        /**
         * The classname has an underscore, so we need to replace it
         * with a hyphen for the file name.
         */
        $class_file = str_ireplace( '_', '-', $class_file );
        $class_file = "class-$class_file.php";
    }

    /**
     * Find the fully qualified path to the class file by iterating through the $file_path array.
     * We ignore the first index since it's always the top-level package. The last index is always
     * the file so we append that at the end.
     */
    $fully_qualified_path = trailingslashit(
        dirname(
            dirname( __FILE__)) );

    /**
     * We start at the second index of the namespace because our directory
     * structure does not include 'McFarlin/TRP'.
     */
    for ($i = 2; $i < count( $file_path) - 1; $i++) {

        $dir = strtolower( $file_path[ $i ] );
        $fully_qualified_path .= trailingslashit( $dir );
    }
    $fully_qualified_path .= $class_file;

    // Now we include the file.
    if (file_exists( $fully_qualified_path)) {
        include_once( $fully_qualified_path );
    }
});

Ja tämän myötä laajennus on kääritty versioon 1.0.0. Voit tarkistaa sen GitHubista (sekä kirjaimellisesti että vain arvostelua varten). Ja toivottavasti tämä on auttanut kävelemään prosessin läpi siirtymisessä nopeasta prototyypistä konseptiin WordPressin konseptissa.

Sarjan postaukset

  1. Nopea prototyyppien luominen WordPressillä: konseptista laajennukseen
  2. Nopea prototyyppien luominen WordPressillä: konseptianalyysi
  3. Nopea prototyyppi: Prototype to Code, osa 1
  4. Rapid Prototyping: Prototype to Code, osa 2
  5. Rapid Prototyping: Esittelyssä automaattinen lataus

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja