Home   Informatica   PHP   Step2: la index.php e gli altri files in dettaglio

Step2: la index.php e gli altri files in dettaglio

Scritto da sergio il 15/09/2010 13:16:19

Ci eravamo lasciati con un accenno al contenuto della nostra index.php, ora la vediamo piu’ nel dettaglio e parliamo anche dei files in essa inclusi.

session_start();
Il nostro framework gestira’ anche la login degli utenti e diversi profili con diritti diversi sulle funzioni, quindi si rende necessario utilizzare delle variabili di sessione.
Ecco che inserendo il comando di inizio sessione nella index.php e passando sempre di qui, risolviamo in un colpo solo il problema di dimenticarci qualche “session_start()” in qualche altro file / pagina. Basta che sia qui e ci togliamo i pensieri!
 
// Inclusione del file di configurazione
include("configuration.php");
Come detto nel file configuration.php mettiamo i parametri di configurazione, come ad esempio quelli di connessione al DB. Comodo avere queste informazioni in un file separato per modificarle velocemente da ambiente di sviluppo ad ambiente produttivo e, se non cambiano, escludere questo file dai passaggi sviluppo-produzione.

configuration.php

<?
// parametri connessione DB
$host = "nomeHost";
$user = "user";
$password = "password";
$dbName = "databaseName";
//
?>
Questo e’ un esempio, ovviamente.

// Inclusione delle classi
function __autoload($class_name) {
    require_once "classes/".$class_name.".class.php"; 
}
Per includere le classi, ed essere sicuri di non dimenticarcene nemmeno una utilizziamo la bellissima funzione del php “__autoload”, la quale, quando viene istanziato un oggetto cerca automaticamente il file in cui la classe dell’oggetto e’ definita.
Noi metteremo tutte le classi dentro alla cartella “classes” e utilizzeremo, come regola, il nome del file composto da <nome_classe>.class.php. E’ una convenzione nostra, si possono scegliere altre soluzioni, ovviamente stando attenti a modificare la funzione.

Dell’inclusione dei componenti e delle utilities ne parleremo piu’ avanti, per ora, se volete, potete commentare queste 2 righe.

// nasconde i messaggi di errore
error_reporting(0);
Questa riga e’ comoda per visualizzare / nascondere i messaggi di errore passando da sviluppo a produzione senza andare a modificare il php.ini dell’ambiente installato.
Vi ricordo come sia consigliato usare le costanti predefinite invece dei valori interi, escluso il caso dello 0 che disabilita i messaggi di errore. Le altre opzioni principali sono: E_ALL che visualizza tutti i messaggi, E_ERROR solo quelli di errore, E_WARNING quelli di avvertimento, E_NOTICE le notifiche, ecc…

// Recupero della variabile della action e della function
$action = $_GET["action"];
$function = $_POST["function"];
Del recupero delle 2 variabili che gestiscono l’intera navigazione nell’applicazione abbiamo gia’ detto la volta scorsa, vi faccio qui notare come la prima venga passata in GET e la seconda in POST, abbiamo preferito cosi’ per varie ragioni che vi spiegeremo nel corso dell’esposizione.

Infine vediamo un esempio di cosa puo’ starci nei 2 files di templates inclusi:

// INIZIO OUTPUT
include("templates/header.html.php");

// FINE OUTPUT
include("templates/footer.html.php");
Ad esempio la header puo’ essere composta cosi’:

<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>VastaFrameWork 0.1</title>
<meta name="Author" content="VastaCom" />
<link rel="stylesheet" class="text/css" href="css/foglioStile.css" />
</head>
<body>
e la footer cosi':

</body>
</html>
Ma ovviamente sono solo esempi per buttare giu’ una prima struttura. All’interno dei 2 files possono trovare spazio delle aree (div) statiche per informazioni statiche (info sul copyright, sul versioning, ecc…)

Ad esempio, nella footer potremmo aggiungere:

   <div id="footer">
      VastaComFrameWork - v.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Powered by: VastaCom
      Associazione Culturale
   </div>
</body>
</html>
Alla prossima, dove vedremo come fare la connessione al database in modo (piu' o meno) "intelligente".

Ciao!

Ultimo aggiornamento 11/01/2020 10:08:55