Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-07-2009 12:04:20

Lopimp
Membre
Date d'inscription: 31-07-2009
Messages: 22

packages de base FZ 1.8

Bonjour à tous,

Je n'ai encore jamais utilisé de framework PHP et je désire développer certaines de mes futures applications avec Zend Framework.

J'ai un peu chipotté avec une ancienne version de ZF (pas la 1.8) je n'ai pas eut de réel soucis, mais je suis resté à une utilisation qui était plus de la découverte du produit qu'autre chose.

Maintenant que la version 1.8 est la, et j'ai un peu de mal à arriver à ce que je veux.
J'aimerai me baser sur cette version pour au final avoir un package de base que je pourrais utiliser pour mes développements futurs.

Mon but est de passer un peu de temps pour avoir une structure et un bootstrap qui prend en charge certains aspects/fonctionnalités.
une fois ce package fait, je pourrai en faire un zip et quand j'ai besoin de commencer un nouveau projet il me suffirait de déziper ce package et changer un minimum de choses (le fichier config par exemple) afin de pouvoir entrer au plus vite dans le développement concret de ma nouvelle application.

En effet un framework est très pratique, mais son but c'est surtout de pouvoir créer des applications, ici je commence un peu à être embrouillé avec les informations que je trouve sur les sites officiels et sur le net pour arriver à faire mon package de base.

Le quickstart c'est ok, mais trop limité pour ce que je veux faire, je trouve pas mal de tuto, mais même si c'est assez clair c'est souvent trop orienté sur une partie et j'ai du mal à avoir une vue d'ensemble.

Je vois pas mal de choses sur une structure qui utilise des modules et j'avoue que je m'y perd un peu.

J'aimerai donc mettre en place une structure de base qui comprennent les fonctionnalités suivantes :
- Configurations de l'application stockées dans un fichier .ini (DB,...)
- Gestion DB
- Gestion du multi-lingue
- Gestion du caching avec APC (mettre les infos tels que config, DB, Labels du multilingue,... en cache)

Voilà j'aimerai savoir si certain d'entre vous aurait déjà une structure proche/similaire et si oui si ils pouvaient la rendre accessible.
Si vous avez des conseils/explications sur l'utilisations des modules (ou pas) je suis également preneurs.


merci d'avance

P.S: c'est mon premier post ici, si je ne suis pas assez clair ou si vous voulez plus d'info sur ce que je recherche, n'hésitez pas à me le dire

Dernière modification par Lopimp (31-07-2009 12:06:09)

Hors ligne

 

#2 31-07-2009 14:05:31

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: packages de base FZ 1.8

Mon but est de passer un peu de temps pour avoir une structure et un bootstrap qui prend en charge certains aspects/fonctionnalités.
une fois ce package fait, je pourrai en faire un zip et quand j'ai besoin de commencer un nouveau projet il me suffirait de déziper ce package et changer un minimum de choses (le fichier config par exemple) afin de pouvoir entrer au plus vite dans le développement concret de ma nouvelle application.

Regarde du côté de Zend_Tools qui permet de générer une bonne arbo pour démarrer un projet.

- Configurations de l'application stockées dans un fichier .ini (DB,...)
- Gestion DB
- Gestion du multi-lingue

Regarde Zend_Application, tu peux faire tout ça avec à partir d'un ini

- Gestion du caching avec APC (mettre les infos tels que config, DB, Labels du multilingue,... en cache)

Quelques lignes de code et déjà beaucoup de composants Zend peuvent se mettre seul en cache. Tu trouvera ton bonheur dans la doc officiel.

Hors ligne

 

#3 31-07-2009 14:29:24

Lopimp
Membre
Date d'inscription: 31-07-2009
Messages: 22

Re: packages de base FZ 1.8

Pour l'arborescence j'ai testé avec Zend_Tools et il me fait la mêem structure que pour le quick start (mais pas de trace de module)


Tu aurais un exemple qui fait tout cas avec Zend_Application?


J'ai installé APC ca fonctionne très bien, quand j'ai chipoté avec l'ancienne version de Zend j'avais un bootstrap comme ceci (ct pas encore une classe)

j'aimerai remorduire un truc dans ce gout la mais en version 1.8

Merci

Code:

<?php
// APPLICATION CONSTANTS - Set the constants to use in this application.
// These constants are accessible throughout the application, even in ini 
// files. We optionally set APPLICATION_PATH here in case our entry point 
// isn't index.php (e.g., if required from our test suite or a script).
defined('APPLICATION_PATH')
    or define('APPLICATION_PATH', dirname(__FILE__));

defined('APPLICATION_ENVIRONMENT')
    or define('APPLICATION_ENVIRONMENT', 'development');

// FRONT CONTROLLER - Get the front controller.
// The Zend_Front_Controller class implements the Singleton pattern, which is a
// design pattern used to ensure there is only one instance of
// Zend_Front_Controller created on each request.
$frontController = Zend_Controller_Front::getInstance();

// CONTROLLER DIRECTORY SETUP - Point the front controller to your action
// controller directory.
$frontController->setControllerDirectory(APPLICATION_PATH . '/controllers');

// APPLICATION ENVIRONMENT - Set the current environment
// Set a variable in the front controller indicating the current environment --
// commonly one of development, staging, testing, production, but wholly
// dependent on your organization and site's needs.
$frontController->setParam('env', APPLICATION_ENVIRONMENT);

// LAYOUT SETUP - Setup the layout component
// The Zend_Layout component implements a composite (or two-step-view) pattern
// In this call we are telling the component where to find the layouts scripts.
Zend_Layout::startMvc(APPLICATION_PATH . '/layouts/scripts');

// VIEW SETUP - Initialize properties of the view object
// The Zend_View component is used for rendering views. Here, we grab a "global"
// view instance from the layout object, and specify the doctype we wish to
// use -- in this case, XHTML1 Strict.
$view = Zend_Layout::getMvcInstance()->getView();
$view->doctype('XHTML1_STRICT');

// CONFIGURATION - Setup the configuration object
// The Zend_Config_Ini component will parse the ini file, and resolve all of
// the values for the given section.  Here we will be using the section name
// that corresponds to the APP's Environment


// define cache Manager
// automatic_serialization is set to true to be able to store other var type then only string
// if APC extension not installed, use file caching 
try { // if APC installed use APC
    $cacheManager= Zend_Cache::factory('Core', 'APC', array('lifetime'=>600,'automatic_serialization'=>true));
} catch (Exception $exception) { // if APC not installed, use file caching in the cache folder
    $cacheManager= Zend_Cache::factory('Core', 'File', array('lifetime'=>600,'automatic_serialization'=>true),array('cache_dir'=>APPLICATION_PATH . '/cache/'));
}

// if clear cache is define, clear the cache
if(isset($_GET["clearAllCache"])){
    $cacheManager->clean(ZEND_CACHE::CLEANING_MODE_ALL);
}else{ // else clear outdated data from the cache
    $cacheManager->clean(ZEND_CACHE::CLEANING_MODE_OLD);
}
// if clear labels is define, clear labels from cache
if(isset($_GET["clearLabels"])){
    $cacheManager->clean(ZEND_CACHE::CLEANING_MODE_MATCHING_TAG, array('labels'));
}

// check if config is in the cache
$configIsLoaded=$cacheManager->load('configuration',false);
if(!$configIsLoaded){ // if no config in cache, get config and save cache
    // get config from .ini file
    $configuration = new Zend_Config_Ini(APPLICATION_PATH . '/config/app.ini', APPLICATION_ENVIRONMENT);    
    $cacheManager->save($configuration,'configuration',array('config'),604800);
    // get db adapter (object managing the DB access)
    $dbAdapter = Zend_Db::factory($configuration->database);
    Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
    $cacheManager->save($dbAdapter,'dbAdapter',array('config'),604800);
}else{
    $configuration=$configIsLoaded;
}

// check if labels are in the cache
$labelsIsLoaded=$cacheManager->load('labels',false);
if(!$labelsIsLoaded){ // if no labels in cache, get labels and save cache
    $dbAdapter = $cacheManager->load('dbAdapter',false);
    $dbAdapter->getConnection();
    // @todo : make an array Labels["key"]["value"]["language"]
    for($i=0;$i<count($configuration->langConfig->allLanguages);$i++){
        $sql="SELECT t1.labels_key, t2.labels_translation_text from ".$configuration->database->prefix."_labels as t1 inner join ".$configuration->database->prefix."_labels_translation as t2 where t1.labels_id=t2.labels_id and t2.labels_translation_language='".$configuration->langConfig->allLanguages->$i."' order by t1.labels_key";
        $languageContainer[$configuration->langConfig->allLanguages->$i]=$dbAdapter->fetchAll($sql);
    }
    $cacheManager->save($languageContainer,'labels',array('labels'),604800);
}



// REGISTRY - setup the application registry
// An application registry allows the application to store application 
// necessary objects into a safe and consistent (non global) place for future 
// retrieval.  This allows the application to ensure that regardless of what 
// happends in the global scope, the registry will contain the objects it 
// needs.

$registry = Zend_Registry::getInstance();

$registry->cacheManager  = $cacheManager;

// CLEANUP - remove items from global scope
// This will clear all our local boostrap variables from the global scope of 
// this script (and any scripts that called bootstrap).  This will enforce 
// object retrieval through the Applications's Registry
unset($frontController, $view, $configuration, $dbAdapter, $registry, $cacheManager, $configIsLoaded, $labelsIsLoaded, $sql, $i, $languageContainer);

Hors ligne

 

#4 03-08-2009 09:29:17

Lopimp
Membre
Date d'inscription: 31-07-2009
Messages: 22

Re: packages de base FZ 1.8

Rebonjour à tous,

tout ce que le bootstrap fait (globalement des initialisations de variables/configs) est ce que ca doit vraiment être éxécuté à chaque fois?

Ce que je voudrais c'est pouvoir exécuter tout ca une première fois et mettre tout ca dans le cache APC.
Ensuite si ces données existent en cache je les utilise et n'exécute plus l'initialisation des variables via le bootstrap. (je ferai un paramètre pour faire un clear de ces valeur en cache, donc une réinitialistation des données bootstrap)

Est ce que je pourrais faire le test sur le caching dans le fichier index?

Est ce que cette facon de penser et de faire pose des problèmes pour l'utilisation classique du framework?

Merci d'avance

Dernière modification par Lopimp (03-08-2009 09:30:56)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages