I Blocchi personalizzati

In questo capitolo verrà spiegato con un semplice esempio com creare un blocco personalizzato da utilizzare liberamente all'interno del proprio progetto.

Per prima cosa dovremmo spostarci all'interno della directory Lib e creiamo un nuovo file che chiameremo:

  • stampa_tempo.php

Fatto questo, apriamo il file e creiamo una semplice classe:

<?php 
class StampaTempo {
    
    function ora($ore = 0){
        $somma_ore = (60 * 60) * $ore;
        $time = time();
        $data_ora = date('d/m/Y H:i:s', $time + $somma_ore);
        return $data_ora;
    }
    
}
 ?>

Abbiamo creato un semplice metodo per stampare a video data e ora addizionando le ore inserite.

Se la nostra necessita fosse stata quella di inserire i dati nel Database oppure manipolare le date avremmo potuto estendere la classe:

class StampaTempo extends DB{
....
}
#### altra classe
class StampaTempo extends DTime{
....
}

Fatto questo passiamo all'apertura del file ./Lib/rgl.php ed inseriamo il nostro blocco all'interno della classe Rgl:

...
class Rgl extends Ext {

    public $Lib = array(
            'Crypto' => 'crypt.php',
            'Session' => 'session.php',
            'Language' => 'language.php',
            'Avvisi' => 'avvisi.php',
            'Str' => 'string.php',
            'DTime' => 'dtime.php',
            'VerifySend' => 'verify.php',
            'SendMail' => 'send_mail.php',
            'DB' => 'db.php',
            'MySql' => 'mysql.php',
            'SqLite' => 'sqlite.php',
            'PgSql' => 'postgresql.php',
            'BreadC' => 'breadcrumbs.php',
            'LogIn' => 'log_in.php',
            'Files' => 'work_files.php',
            'Files' => 'work_files.php',
            'UploadFile' => 'upload_file.php',
            'Restful' => 'restful.php',
            'StampaTempo' => 'stampa_tempo.php',
        );
...

Dove la chiave sarà il nome della classe, mentre il valore sarà il nome del file.

Ora spostiamoci all'interno della view (ad esempio testView.php) e scriviamo questo codice:

<?php
// Codifica caratteri
header("Content-Type: text/html; charset=utf-8");
#header("Content-type: application/json");
$GLOBALS["Rgl"] = new $nameClass(
    array(
        "Crypto", // gestione Criptazione
        "Session", // gestione delle sessioni
        "Language", // gestione delle lingue
        "Avvisi", // gestore avvisi e alert
        "Str", // trattamento delle stringhe
        "DTime", // trattamento delle date
        "VerifySend", // verifica i dati in invio
        #"SendMail", // invia email in vari formati
        "DB", // gestione del DB in PDO comprende (MySql, SqLite, PostgreSql)
        #"MySql", // gestione del DB Mysql
        #"SqLite", // gestione del DB SqLite
        #"PgSql", // gestione del DB PstgreSql
        "BreadC", // gestione briciole di pane
        #"UploadFile", // Upload File & image
        "LogIn", // gestione Login
        #"Files", // gestione dei file fisici
        #"Restful" // request and response restful,
        "StampaTempo",
    )
);

class TestView extends TestModel {

    function view_page(){
        // creiamo un nuovo file di Log
        $ora_roma = StampaTempo::ora(0);
        $ora_londra = StampaTempo::ora(-1);
        $ora_new_york = StampaTempo::ora(-6);

        ### stampo la pagina dei contenuti
        KuiperBelt::get_template(
            'test.php',
            $GLOBALS["Rgl"],
            array(
                'roma'=>$ora_roma,
                'londra'=>$ora_londra,
                'new_york'=>$ora_new_york,
            )
        );
    }
}
TestView::view_page();
?>

Cosa abbiamo fatto:

  • Richiamato il blocco all'interno del Global['Rgl'];
  • Richiamato il metodo ora() all'interno del metodo view_page();
  • Inserito i dati all'interno dell'array per la stampa a video;

Ora spostiamoci nella directory template, apriamo il file test.php e scriviamoci:

<h1>Roma: <?php echo $_['roma'] ?></h1>
<h3>Londra: <?php echo $_['londra'] ?> </h3>
<h3>New York: <?php echo $_['new_york'] ?> </h3>

Dovremmo avere come risultato qualcosa di simile:

Roma: 29/08/2017 16:05:36

Londra: 29/08/2017 15:05:36

New York: 29/08/2017 10:05:36

Abbiamo creato un blocco riutilizzabile per un nostro progetto in poco meno di 5 minuti ;-)