Zend Framework Registry
Indice
Impostazione e lettura dei valori
⤽
Cosa sono i Registri? È come un memorizzare globale. Dobbiamo solo registrare valori e allora si possono utilizzare in tutta l’applicazione. Per esempio, possiamo memorizzare il nome dell’applicazione, così ogni volta che abbiamo bisogno di visualizzare il nome dell’applicazione, facciamo una chiamata al Registro.
Per utilizzare il Registro, dobbiamo inserire il file
Ok, ora faremo un po’ di pratica utilizzando il Registro. Usiamo ancora il nostro precedente esercizio. Si prega di leggere che il post di prima. Poi, seguire la seguente procedura:
Memorizzare i valori in arrayPer utilizzare il Registro, dobbiamo inserire il file
registry.php
di Zend Framework nell’applicazione:
Copia codice
require_once 'Zend/Registry.php';
- Aprire quindi il file “
index.php
” sotto “web_root
“. Inserire le linee 09 – 12:
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'; require_once 'Zend/Registry.php'; Zend_Registry::set('title',"Mia prima applicazione"); Zend_Controller_Front::run('../application/controllers'); ?>
title
” e abbiamo messo un valore a questo parametro. - Quindi, proviamo a chiamare/leggere questo registro. Apri il tuo
UserController.php
sotto la cartellaapplication/controller
. - Aggiornare il metodo
indexAction
come segue:
Copia codicepublic function indexAction() { $title = Zend_Registry::get('title'); $this->view->assign('name', 'Manager'); $this->view->assign('title', $title); }
Testare le modifiche puntando il browser a: http://localhost/test/zend/ciaoMondo/web_root/user/
.
⤽
In questa parte si parla di come registrare un valore di array e come leggerli? Ogni valore conservarto nel registro può essere letto come array. Ok, per capire meglio seguire questa procedura.
Quindi, Apriamo di nuovo il file
Si registra un parametro di un array denominato “
Ok, proviamo nuovamente ad aggiornare “
Questo è un altro modo di leggere il registro. Si può usare per leggere diversi valori dal registro.
Ok, prima di provarlo aggiornare la vista in
Prova da puntare il browser su
Lavorare con gli oggettiQuindi, Apriamo di nuovo il file
index.php
sotto la cartella web_root
.
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';
require_once 'Zend/Registry.php';
Zend_Registry::set('title',"Mia prima applicazione");
$arrName = array('Mario Balducci', 'Federico Rossi',
'Sergio Parilli', 'Francesco Belli');
Zend_Registry::set('credits',$arrName);
Zend_Controller_Front::run('../application/controllers');
?>
credits
” sulle righe riga 15-17. Come leggerlo?Ok, proviamo nuovamente ad aggiornare “
UserController.php
“. Aggiornando indexAction
diventa:
Copia codice
public function indexAction()
{
$registry = Zend_Registry::getInstance();
$title = $registry['title'];
$credits = $registry['credits'];
$strCredit = implode(", ",$credits);
$this->view->assign('name', 'Manager');
$this->view->assign('title', $title);
$this->view->assign('credits', $strCredit);
}
Ok, prima di provarlo aggiornare la vista in
index.phtml
sotto la cartella application/views/scripts/user
. Aggiorna con 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><?=$this->escape($this->title);?>, <?=$this->escape($this->name);?></h1>
credits: <?=$this->escape($this->credits);?>
</body>
</html>
http://localhost/test/zend/ciaoMondo/web_root/user/
.⤽
Siamo in grado di memorizzare oggetti nel Zend_Registry. Come applicarla? E per cosa? Ricordate, nel nostro esercizio nel capitolo Zend Framework Database stavamo sempre a scrivere i dati di configurazione del database e la sua connessione svariate più volte. Ogni volta che c’era la connessione al database, dovevamo scrivere la connessione. Siamo in grado di risparmiare (energia), scrivendola una sola volta e memorizzarla nel registro.
Per registrare la connessione al database, si può usare questo modo:
Poi, per leggerlo:
Ok, per la pratica, apriamo il file
Successivamente, aggiorniamo “
Riesci a vederlo? È semplice, non è vero?
Per registrare la connessione al database, si può usare questo modo:
Copia codice
$params = array('host'=>'localhost',
'username'=>'root',
'password' =>'password',
'dbname'=>'zend'
);
$DB = new Zend_Db_Adapter_Pdo_Mysql($params);
$DB->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::set('DB',$DB);
Copia codice
$registry = Zend_Registry::getInstance();
$DB = $registry['DB'];
index.php
sotto la cartella web_root
. Il suo aggiornamento diventerebbe come segue:
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';
require_once 'Zend/Registry.php';
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
Zend_Registry::set('title',"Mia prima applicazione");
$arrName = array('Mario Balducci', 'Federico Rossi',
'Sergio Parilli', 'Francesco Belli');
Zend_Registry::set('credits',$arrName);
$params = array('host'=>'localhost',
'username'=>'root',
'password'=>'password',
'dbname'=>'zend'
);
$DB = new Zend_Db_Adapter_Pdo_Mysql($params);
$DB->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::set('DB',$DB);
Zend_Controller_Front::run('../application/controllers');
?>
UserController.php
” sotto la cartella application/controllers
per farlo diventare come questo:
Copia codice
<?php
require_once 'Zend/Controller/Action.php';
class UserController extends Zend_Controller_Action
{
public function indexAction()
{
$registry = Zend_Registry::getInstance();
$title = $registry['title'];
$credits = $registry['credits'];
$strCredit = implode(", ",$credits);
$this->view->assign('name', 'Manager');
$this->view->assign('title', $title);
$this->view->assign('credits', $strCredit);
}
public function nameAction()
{
$request = $this->getRequest();
$this->view->assign('name', $request->getParam('username'));
$this->view->assign('gender', $request->getParam('gender'));
$this->view->assign('title', 'Nome Utente');
}
public function registerAction()
{
$request = $this->getRequest();
$this->view->assign('action',"process");
$this->view->assign('title','Registrazione Membri');
$this->view->assign('label_fname','Nome');
$this->view->assign('label_lname','Cognome');
$this->view->assign('label_uname','Nome Utente');
$this->view->assign('label_pass','Password');
$this->view->assign('label_submit','Registra');
$this->view->assign('description','Compilare questo modulo completamente:');
}
public function editAction()
{
$registry = Zend_Registry::getInstance();
$DB = $registry['DB'];
$request = $this->getRequest();
$id = $request->getParam("id");
$sql = "SELECT * FROM `user` WHERE id='".$id."'";
$result = $DB->fetchRow($sql);
$this->view->assign('data',$result);
$this->view->assign('action', $request->getBaseURL()."/user/processedit");
$this->view->assign('title','Modifica Membri');
$this->view->assign('label_fname','Nome');
$this->view->assign('label_lname','Cognome');
$this->view->assign('label_uname','Nome Utente');
$this->view->assign('label_pass','Password');
$this->view->assign('label_submit','Edita');
$this->view->assign('description','Compilare questo modulo completamente:');
}
public function processAction()
{
$registry = Zend_Registry::getInstance();
$DB = $registry['DB'];
$request = $this->getRequest();
$data = array('first_name' => $request->getParam('first_name'),
'last_name' => $request->getParam('last_name'),
'user_name' => $request->getParam('user_name'),
'password' => md5($request->getParam('password'))
);
$DB->insert('user', $data);
$this->view->assign('title','Processo di registrazione');
$this->view->assign('description','Registrazione avventa');
}
public function listAction()
{
$registry = Zend_Registry::getInstance();
$DB = $registry['DB'];
$sql = "SELECT * FROM `user` ORDER BY user_name ASC";
$result = $DB->fetchAssoc($sql);
$this->view->assign('title','Lista membri');
$this->view->assign('description','Sotto, nostri membri:');
$this->view->assign('datas',$result);
}
public function processeditAction()
{
$registry = Zend_Registry::getInstance();
$DB = $registry['DB'];
$request = $this->getRequest();
$data = array('first_name' => $request->getParam('first_name'),
'last_name' => $request->getParam('last_name'),
'user_name' => $request->getParam('user_name'),
'password' => md5($request->getParam('password'))
);
$DB->update('user', $data,'id = '.$request->getParam('id'));
$this->view->assign('title','Processo di modifica');
$this->view->assign('description','Modifica eseguita');
}
public function delAction()
{
$registry = Zend_Registry::getInstance();
$DB = $registry['DB'];
$request = $this->getRequest();
$DB->delete('user', 'id = '.$request->getParam('id'));
$this->view->assign('title','Eliminazione Dati');
$this->view->assign('description','Eliminazione avvenuta');
$this->view->assign('list',$request->getBaseURL()."/user/list");
}
}
?>
Ancora nessun commento