IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

[Zend 2.x] Mettre les objets générés par zend/factories en session


Sujet :

Zend Framework PHP

  1. #1
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut [Zend 2.x] Mettre les objets générés par zend/factories en session
    Bonjour,

    Je crée de nombreux composant via les fichiers de config de zend (module.config.php) notamment avec les factories.

    Par exemple voici la section 'factories' d'un de mes modules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'service_manager' => array(
    	'factories' => array(
    		'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
    		'\Translate\EntitiesFactory' => function($sm){
    								$session = $sm->get('session');										
    								$factory = EntitiesFactory::getInstance($session);
    								return $factory;
    						}
    	),
    ),
    Je voudrais qu'automatiquement ces objets soient mis en session. Est-ce possible ? En effet, dans cet exemple, je déclare le translator qui charge un fichier contenant des libellé traduti dans plusieurs langues. EntitiesFactories, fais de même avec des fichiers csv plus complexe de code/libellé.

    Pour le moment, ces fichiers sont lu à chaque chargement de page. S'ils étaient en session, je pense que mon appli serait plus performante, car de nombreux accès disque seraient évités.

    Merci de m'éclairer sur le fait que zend puisse ou non mettre les objets qu'il génère en session.

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Par défaut
    Salut,

    A priori si ton objet n'est pas dépendant de l'utilisateur, il faudrait mieux le mettre en cache.

    Voici par exemple comment je met en cache mon objet Acl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    public function getServiceConfig()
    {
    	return array(
    		'factories' => array(
    			'cache' => function () {
    				return \Zend\Cache\StorageFactory::factory(array(
    					'adapter' => array(
    						'name' => 'filesystem',
    						'options' => array(
    							'cache_dir' => __DIR__ . '/../../data/cache',
    							'ttl' => 100
    						),
    					),
    					'plugins' => array(
    						array(
    							'name' => 'serializer',
    							'options' => array(
     
    							)
    						)
    					)
    				));
    			},
    			'acl' => function ($sm) {
    				$cache = $sm->get('cache');
    				$acl = $cache->getItem('acl');
    				if (!$acl) {
    					$config = $sm->get('config');
    					$acl = new Acl();
    					if (isset($config['acl'])) {
    						if (isset($config['acl']['resources'])) {
    							foreach ($config['acl']['resources'] as $string) {
    								$acl->addResource($string);
    							}
    						}
    						if (isset($config['acl']['roles'])) {
    							foreach ($config['acl']['roles'] as $string) {
    								$acl->addRole($string);
    							}
    						}
    						if (isset($config['acl']['allow'])) {
    							foreach ($config['acl']['allow'] as $row) {
    								$acl->allow($row['role'], $row['resource'], $row['action']);
    							}
    						}
    					}
    					$cache->setItem('acl', serialize($acl));
    				} else {
    					$acl = unserialize($acl);
    				}
     
    				return $acl;
    			},
     
     
    		),
    	);
        }

Discussions similaires

  1. les warnings généré par zend studio
    Par nana_md dans le forum Zend Framework
    Réponses: 3
    Dernier message: 12/09/2013, 13h02
  2. [HTML] Nommer les boutons générés par <input type=file>
    Par elspliffo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/09/2007, 12h45
  3. Recuperer les controls générés par access
    Par petozak dans le forum IHM
    Réponses: 5
    Dernier message: 26/07/2007, 23h05
  4. coché tous les checkbox généré par php
    Par Henry9 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/07/2007, 13h13
  5. Réponses: 2
    Dernier message: 11/12/2006, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo