Zend Framework Intro

Struttura delle cartelle
Zend Framework è uno dei framework PHP più popolari a livello mondiale. Questo framework viene rilasciato da Zend, un fornitore importante per PHP. In questo post, impareremo a usare Zend framework da zero. Costruiremo una semplice applicazione denominata “ciaoMondo”. In questo framework, si usa MVC (Model View Controller).

MVC: Model View Controller

È una applicazione costituita da tre componenti:

  • Model – Questa è la parte dell’applicazione che definisce le funzionalità di base con un insieme di astrazioni. L’accesso ai dati e le routine relatibe possono essere definite nel Model.
  • View – Le view definiscono esattamente quello che viene presentato all’utente. Di solito i controller passano dati a ciascuna view per essere visualizzati in un dato formato, Le view ricevono anche dati dagli utenti. La marcatura HTML viene di solito inserita nelle view.
  • Controller – I controller tengono insieme l’intero pattern MVC. Manipolano i model, decidono quale view visualizzare in base alle richieste degli utenti e ad altri fattori, forniscono dati alle view o passano il controllo ad un altro controller. Molti sviluppatori consigliano di mantenere i controller il più semplici possibile.

Il nostro obiettivo è di creare un’applicazione semplice come questa:

Per prima cosa, creare la struttura come questa nella vostra cartella del server web (io l’ho creata sotto www/test/zend. È possibile crearla sotto www/test o semplicemente sotto www).


Quindi, scaricare Zend Framework da qui. Estrarre file compressi. Si ottiene una struttura come questa::


Copiare la libreria (cartella denominata “zend” sotto la cartella library) nella libreria di ciaoMondo/library. Quindi, l’applicazione diventerebbe come questa:
Nell’articolo successivo, spiegherò il significato delle cartelle.

Anatomia di un'applicazione Zend Framework
Abbiamo creato la struttura delle cartelle per l’applicazione ciaoMondo per lo Zend framework. Quello che abbiamo creato è lo standard per il modello Model View Controller in applicazioni Zend Framework. In questo post, vedremo la funzione di ogni cartella.
Ci sono 4 cartelle di livello superiore all’interno della cartella dell’applicazione:
  1. application
  2. library
  3. test
  4. web_root

La cartella application

La cartella dell’applicazione contiene tutto il codice necessario per eseguire l’applicazione. L’utente non può accedere direttamente. Questa è la separazione tra il display, il business e il controllo logico del modelo. In questa applicazione, ci sono modelli, visualizzazioni e cartelle controllori. Queste cartelle contengono il modello, la vista e file di controllo. Altre cartelle possono essere create, per esempio per i files di configurazione.

La cartella library

Tutte le applicazioni utilizza la libreria Zend. Abbiamo posto Zend Framework qui, ma, sostanzialmente, possiamo memorizzare biblioteca ovunque. Ma assicuriamoci che l’applicazione riesca a trovarla. È possibile memorizzarla in una directory globale includono accessibile per l’applicazione php sul server, come /usr/php_include o c:\code\php_include. Assicurarsi di configurare il file di php.ini (o è possibile utilizzare la funzione set_include_path()).

La cartella test

Questa cartella viene utilizzata per memorizzare tutti gli unit test che sono state scritte. Se ancora non conoscete lo unit testing, è possibile leggere qualche informazione da qui. Molti programmatori PHP non danno importanza allo unit test come passo speciale. E voi?

La cartella web_root

Tutte le richieste web fatte dagli utenti vengono convogliati attraverso un unico file, di solito chiamato index.php. Questo file è l’unico file php che deve essere accessibile da web server. Questo file si trova nella web_root. Altri file comuni che è possibile accedere direttamente sono i file per le immagini, i file CSS e i file JavaScript. Ognuno di loro ha una sotto-directory all’interno della directory web_root.
Successivamente, sarà scritto il codice per la semplice applicazione chiamata ciaoMondo.

Accesso singolo al file index.php
Come si sa’ a Zend Framework, il file index.php è un file che ci deve essere nella cartella web_root. Questo file è usato per tutte le richieste nella pagina. Viene utilizzato per la configurazione dell’ambiente (environtment) dell’applicazione, il sistema di controllo di Zend Framework, quindi esegue l’applicazione stessa. Questo è il modello Front Controller.
Creare un file denominato “index.php” all’interno di ciaoMondo/web_root e inserire il seguente codice:
Copia codice

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/Berlin');
$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir . '/library' . PATH_SEPARATOR . get_include_path());
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../application/controllers');
?>
Ok, diamo un’occhiata a questo file in modo più dettagliato.
Le line3 2-3-4 sono utilizzate per l’environtment installazione.
Linea 3 per garantire che tutti gli errori o avvisi vengano visualizzati.
Linea 4 per il fuso orario di default l’installazione.
include_path() specifica una lista di cartelle in cui le funzioni require(), include() e fopen_with_path() hanno il percorso per cercare i files. È possibile impostarlo nel file php.ini. Ma, se non possiamo farlo, possiamo usare set_include_path(). Si può vedere alla linea 7.
Questo è il file di bootstrap. Bootstrap è il termine usato per descrivere l’avvio dell’applicazione. Il nucleo di questo codice si trova alle righe 9-10. Questo istanzierà e spedirà il front controller. E sarà indirizzata la richiesta ai action controllers.
Apache .htaccess
Abbiamo bisogno di indirizzare qualsiasi richiesta al front controller. Possiamo di utilizzare il modulo di apache chiamato “mod_rewrite“. Poi, lavoreremo con il file .htaccess. Questo file farà il routing di lavoro.
Creare un file chiamato “.htaccess” all’interno di web_root. Quindi, scrivete al suo interno il codice seguente:
Copia codice

RewriteEngine On
RewriteRule .* index.php
Alla linea 2, come possiamo vedere, Apache indirizzerà tutte le richieste a index.php. Codice semplice, non è vero?
Un’altra opzione: è possibile configurare la cartella direttamente nel file httpd.conf di Apache. Si sa’ che non è così facile se non abbiamo proprio server. Così, configurare in una locale configurazione di Apache un file chiamato .htaccess è migliore opzione.
Creando il Controller
Il modello del front controller mappa le richieste dell’URL dall’utente ad una particolare funzione o metodo membro all’interno di una specifica classe controller. Viene chiamato come il routing e la spedizione (dispatching). Le classi controller hanno per convenzione un rigoroso requisito per la sua denominazione. Il router chiama un metodo denominato {nomeAzione}Action() all’interno della classe {nomeControllore}Controller. Questa classe deve esistere all’interno di un file chiamato {nomeControllore}.php Se non si fornisce, verrà utilizzato index. Ancora confuso? Date un’occhiata a questo esempio:
Creare un file denominato “IndexController.php” all’interno di application/controller. Inserire il seguente codice:
Copia codice

<?php
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('title', 'Ciao, Mondo!');
  }
}
?>
All’interno del sistema front controller, il dispatcher si aspetta di trovare un file chiamato IndexController.php all’interno della cartella applicazione/controller. Questo file deve contenere una classe chiamata IndexController e, come minimo, contenere un metodo chiamato indexAction().
Creando il View
Ora, abbiamo bisogno di fornire un modello del view per la visualizzazione della pagina. Creeremo quindi un file index.phtml per questo scopo. Questo file dodrà essere memorizzato all’interno della cartella views/scripts/index. Il modello di view, richiede una cartella separata per ogni controller.
Creare quindi un file denominato “index.phtml” all’interno della cartella views/scripts/index. Inserire il seguente codice:
Copia codice

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><? echo $this->escape($this->title); ?></title>
</head>
<body>
  <h1><? echo $this->escape($this->title); ?></h1>
</body>
</html>
Il modello del file viene eseguito all’interno di una funzione membro di Zend_View e così l’oggetto $this è disponibile all’interno del modello del file che diventa il gateway per le funzionalità di Zend_View. Tutte le variabili che sono state valorizzate nella view all’interno del controller sono disponibili direttamente come proprietà di $this. Si può vedere di sopra come viene usata la variabile $this->title.