19 nov
Par Clément dans Langages, PHP, Screencasts
Mots-clefs :Framework, PHP, Screencasts, Zend
Vu que le Bootstrap du Zend Framework à changer, j’ai du me plonger dans le code et essayer de trouver comment marchait le nouveau système d’initialisation du Framework.
C’est très simple, c’est une classe qui à besoin d’être remplit avec du joli code !
Je vous met le code dans la suite !
< ?php
/**
* My new Zend Framework project
*
* @author
* @version
*/
require_once 'Zend/Controller/Plugin/Abstract.php';
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Controller/Request/Abstract.php';
require_once 'Zend/Controller/Action/HelperBroker.php';
/**
*
* Initializes configuration depndeing on the type of environment
* (test, development, production, etc.)
*
* This can be used to configure environment variables, databases,
* layouts, routers, helpers and more
*
*/
class Initializer extends Zend_Controller_Plugin_Abstract
{
/**
* @var Zend_Config
*/
protected static $_config;
/**
* @var string Current environment
*/
protected $_env;
/**
* @var Zend_Controller_Front
*/
protected $_front;
/**
* @var string Path to application root
*/
protected $_root;
/**
* Constructor
*
* Initialize environment, root path, and configuration.
*
* @param string $env
* @param string|null $root
* @return void
*/
public function __construct($env, $root = null)
{
$this->_setEnv($env);
if (null === $root) {
$root = realpath(dirname(__FILE__) . '/../');
}
$this->_root = $root;
$this->initPhpConfig();
$this->_front = Zend_Controller_Front::getInstance();
// set the test environment parameters
if ($env == 'test') {
// Enable all errors so we'll know when something goes wrong.
error_reporting(E_ALL | E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
$this->_front->throwExceptions(true);
}
}
/**
* Initialize environment
*
* @param string $env
* @return void
*/
protected function _setEnv($env)
{
$this->_env = $env;
}
/**
* Initialize Data bases
*
* @return void
*/
public function initPhpConfig()
{
}
/**
* Route startup
*
* @return void
*/
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
$this->initDb();
$this->initHelpers();
$this->initView();
$this->initPlugins();
$this->initRoutes();
$this->initControllers();
}
/**
* Initialize data bases
*
* @return void
*/
public function initDb()
{
$params = array( 'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'contacts');
try{
$db = Zend_Db::factory( 'PDO_MYSQL', $params );
Zend_Db_Table::setDefaultAdapter( $db );
}catch ( Exception $e ) {
exit( $e -> getMessage() );
}
Zend_Registry::set( 'dbAdapter', $db );
}
/**
* Initialize action helpers
*
* @return void
*/
public function initHelpers()
{
// register the default action helpers
Zend_Controller_Action_HelperBroker::addPath('../application/default/helpers', 'Zend_Controller_Action_Helper');
}
/**
* Initialize view
*
* @return void
*/
public function initView()
{
// Bootstrap layouts
Zend_Layout::startMvc(array(
'layoutPath' => $this->_root . '/application/default/layouts',
'layout' => 'main'
));
}
/**
* Initialize plugins
*
* @return void
*/
public function initPlugins()
{
}
/**
* Initialize routes
*
* @return void
*/
public function initRoutes()
{
// adresse du site C Action P vP
// http://www.monsite.com/contacts/view/id/1
// http://www.monsite.com/contact/1
$routeur = $this -> _front -> getRouter();
$routeur -> addRoute( 'contact',
new Zend_Controller_Router_Route( 'contact/:id',
array( 'controller' => 'contacts',
'action' => 'view' ) )
);
}
/**
* Initialize Controller paths
*
* @return void
*/
public function initControllers()
{
$this->_front->addControllerDirectory($this->_root . '/application/default/controllers', 'default');
}
}
?>
« Adobe Configurator présenté en screencast par Emob | Annonce : Petit problème niveau matériel. »
2 trackbacks
26 commentaires
UNIT
20 novembre 2008 à 0:38
1Bonjour,
Juste un petit commentaire pour vous dire que vos screencasts sont très intéressants, surtout ceux sur le php et le framework Zend.
Bonne continuation.
Clément
20 novembre 2008 à 10:35
2@UNIT: Merci beaucoup !
Kaimite
20 novembre 2008 à 11:48
3Salut et merci pour cette info !
Heureusement cela fonctionne également avec les boostrap à la version 1.6.
Mais effectivement cela permet de structurer un peu la configuration du projet.
Juste une petite remarque. La Paginator était déjà dans la 1.6, je crois qu’ils ‘ont juste amélioré dans la 1.7
@++ Kaimite
Clément
20 novembre 2008 à 12:08
4@Kaimite: Merci
et merci de l’information pour le Paginator
A bientôt
Hervé
22 novembre 2008 à 13:24
5Je confirme que le paginator était déjà présent dans la 1.6.
Cette version du bootstrap est apparu également à la 1.6 (Intégré à Zend Studio For Eclipse).
Hervé
22 novembre 2008 à 13:28
6Je vois que tu copies Zend dans librairy.
Y a mieux à faire histoire de pas toujours devoir faire un joli copier coller de la dernière version de ZF dans tes projets.
C’est d’utiliser les variables avec l’include path.
Clément
22 novembre 2008 à 14:49
7@Hervé: Je sais bien mais pour cet exemple, je voulais montrer comment faire une application qui n’ai pas dépendante de la library et du dossier ou elle est.
Donc j’ai mis Zend dans le dossier Library simplement
et pour le boostrap aussi je savais mais vu qu’aucun site ne proposais un tuto. J’ai penser que c’était une bonne idée
Merci
Hervé
23 novembre 2008 à 1:57
8@Clément: L’idée est excellente vu que ceux qui n’utilisent pas Zend Studio n’ont pas ce boostrap.
Je ne peux dire que bravo (comme pour tes nombreux postes).
Guigui
23 novembre 2008 à 23:24
9GG petit clément, l’élève va bientôt rattraper le maître
enfin rêve pas trop. En tout cas merci tu m’as fait gagner du temps, j’ai pas eu besoin de chercher…
J’ai des idées pour tes sceencasts faudra qu’on en parle la prochaine fois qu’on se voit :p
++
Clément
24 novembre 2008 à 12:24
10@Guigui: Yep :p Pas de soucis pour les idées de screencasts
Merci du compliment !
titou
7 décembre 2008 à 14:47
11Hello, merci pour ce très bon tuto .. Commençant à programmer avec zend studio et zend framework, cela m’a bien aidé, mais j’ai encore un « petit» soucis….
Comment fais-tu pour inclure le ZendX Qjuery dans le bootstraps ou la classe initializer?
Car ds ma page j’ai un gros message d’erreur…. et je ne sait absolument pas comment integrer le zenxxjquery dans ces 2 fichiers. Aurait- tu une idée?
MErci !
dev21
3 janvier 2009 à 16:28
12Super tuto, j’ai une question , quel différence entre zend studio et zend studio for eclipse ? dans zend studio j’arrive pas a créer l’architecture des dossiers , le bootstrap etc. automatiquement à la création d’un projet . Merci pour votre aide
Clément
3 janvier 2009 à 18:50
13Zend Studio for eclipse est basé (comme son nom l’indique) sur Eclipse et permet une organisation très claire du code.
Le « for eclipse» peut créer un projet de type Zend et donc créer une base de l’application.
Le « Zend Studio» est « seulement» un IDE (le premier IDE) pour Zend. Je te conseille maintenant a passer à la version for eclipse. beaucoup plus stable et performant !
Hervé Delvaux
4 janvier 2009 à 13:12
14Tout à fait d’accord avec Clément, Zend pousse pas mal dans ce sens (passer à Zend Studio for Eclipse).
La prise en main est peut-être un peu moins facile que Zend Studio mais ZFE offre bien plus de possibilité.
dev21
5 janvier 2009 à 1:24
15merci, j’y voie plus clair !!! J’ai suivi votre conseil et j’ai téléchargé ZFE, la création automatique de la base de l’application est très pratique. J’vai pouvoir me lancer dans mon développement;
merci encore pour ces super tutos !!!
dev21
5 janvier 2009 à 17:32
16Même question que « titou» , je n’arrive pas à inclure la librairie ZendX, j’ai ajouter l’include path dans ZFE mais ça ne fonctionne pas. merci
….’Plugin by name ‘AutoComplete’ was not found in the registry;…..
Clément
6 janvier 2009 à 14:15
17J’essaye de voir ca ce soir ! Merci de votre participation !!
titou
6 janvier 2009 à 16:36
18J’ai trouvé une solution grâce au forum de la communauté z-f
Je te mets le lien direct pour y acceder.
Ensuite, il te siffit dans ton initializer d’ajouter à la méthode initPlugins:
$helper = new ViewSetup();
$this->_front->registerPlugin($helper);
Et le tour est joué
titou
6 janvier 2009 à 16:37
19§§’ai oublié le lien:
http://www.z-f.fr/forum/viewtopic.php?id=2171
dev21
6 janvier 2009 à 19:22
20ok, tu as créer un plugin donc , question toute bête tu le copie où le fichier ViewSetup.php
titou
7 janvier 2009 à 9:20
21Je l’ai mis dans mon dossier model
dev21
9 janvier 2009 à 15:44
22beh moi je parviens toujours pas à utiliser ZendX, un petit tuto serait le bienvenue
Clément
9 janvier 2009 à 21:35
23Un tutorial est en cours de réalisation (la je fait quelque test pour les formulaires
) .
je vous tiens au courant
dev21
14 janvier 2009 à 18:32
24C’est cool , merci merci
cortex
9 février 2009 à 15:58
25Intéressant, juste un peu long. D’ailleurs c’est comique, tu soulignes qu’il faut juste 10 lignes de codes pour initialiser une connection à la base de données et tu passes presque 5 min à les écrire dont une bonne partie à indenter et espacer… Je sais par expérience qu’il est très difficile d’écrire du code en même temps qu’on parle, et encore plus du fait qu’on s’enregistre. Les snippets sont là pour ça. Ton screencast sera plus fluide et tu y gagnera en confiance. Et si c’est fluide et qu’on voit que tu cherches pas ce que tu dois faire, on aura encore plus envie de s’y mettre.
Du coup, sur les 20 minutes, tu aurais gagner du temps et surement pu parler du $_env et $_config car on reste sur notre faim de voire les identifiants de connection écrits en dur comme ça.
@+
Jordan
28 février 2009 à 12:09
26Bonjour, et merci du tuto,
Je souhaiterais obtenir ZendX_jquery, mais je ne trouve pas le moyen de le télécharger ??
Merci de votre aide
Laisser un commentaire
Devenir Fan de Dator.fr
Nuage de tags
Sponsors
Blogoliste
Blogs Amis
Derniers Posts
Derniers Commentaires
Les meilleurs sujets
Propulsé par WordPress