2009-03-12 17 views
21

Je voudrais créer une variable globale dans CakePHP. Si je définis quelque chose dans mon app_controller.php commeQuelle est la meilleure façon de créer des variables globales dans CakePHP?

var $varName 

Je peux accéder à

$this->varName 

de l'un de mes contrôleurs, mais je ne peux pas y accéder à partir de modèles. Comment créer une variable globale accessible à partir des modèles?

La valeur de $ varName n'est pas connue avant l'exécution, donc je ne pense pas que bootstrap.php soit une option.

Répondre

30

CakePHP de nouveaux Configure class peut être utilisé pour stocker et récupérer des valeurs spécifiques d'application ou exécution. Soyez prudent , cette classe vous permet de quoi que ce soit de stocker dans, utilisez alors dans toute autre partie de votre code

+6

Ceci est une ancienne réponse, mais pour tous ceux qui se demandent pourquoi vous devez « faire attention » c'est parce que cette classe est 'une tentation que de briser le modèle MVC CakePHP a été conçu pour. L'objectif principal de la classe Configure est de conserver les variables centralisées qui peuvent être partagées entre de nombreux objets. N'oubliez pas d'essayer de vivre par «convention sur configuration» et vous ne finirez pas par casser la structure MVC que nous avons mise en place. » – swiecki

+0

Est-ce un bon endroit pour mettre une variable globale pour le mode Test en mode Live? J'ai quelques routines que je veux me comporter différemment si nous testons. – zkent

-2

En fait, pourquoi fais-tu ça? Le modèle ne devrait avoir aucune idée qu'un contrôleur existe.

S'il s'agit d'un objet métier (modèle), créez-le en tant que tel. Sinon, le modèle ne devrait pas le savoir.

+3

Certaines variables globales sont assez standard. Par exemple, mon serveur de test et mon serveur de production sont situés dans deux domaines très différents, et j'ai souvent besoin de créer des liens avec eux ... même dans les modèles. Donc, avoir une variable globale pour cela ne brise pas vraiment les principes de conception. En fait, cela pourrait vous éviter de casser les principes de conception. –

+4

Il ya des choses simples qui ne valent pas les appels de base de données supplémentaires/cpu cyles/lectures de disque pour faire un modèle etc, juste pour une simple liste de valeurs. Les principes de conception ne sont que cela - les principes. Parfois, un principe ne s'applique pas au monde réel. – Hippyjim

2

Fonctions globales et variables pour votre application peuvent être définies dans l'application/config/bootstrap.php

pour plus d'informations voir http://book.cakephp.org/view/48/Bootstrapping-CakePHP

+0

https://web.archive.org/web/20090313201654/http://book.cakephp.org/view/48/Bootstrapping-CakePHP – rubo77

29

Pour enregistrer les variables globales utilisent la fenêtre de configuration de classe. Par exemple:

Configurer :: write ('Company.name', 'Pizza, Inc.');

Pour lire plus tard la variable en tout lieu de l'utilisation de code:

Configure :: read ('Company.name'); // rendements: 'Pizza, Inc.'

Le fichier recommandé pour stocker les constantes globales est dans app/config/bootstrap.php

Pour plus d'informations, voir:
classe Configurer - Configure Class CakePhp. ou Section 3.4.7 sur Bootstrapping

+1

La réponse d'Axe était correcte, mais j'ai donné +1 pour donner un exemple aussi - juste ce dont j'avais besoin pour googler ceci. – Hippyjim

+0

C'est bien mais si les données sont spécifiques à l'utilisateur, la classe Session pourrait être utile – Musa

1

Vous pouvez définir des constantes dans bootstrap.php dans le répertoire app/config /. Il peut être utilisé globalement dans n'importe quel contrôleur ou vue.

5

Vous pouvez déclarer une variable globale dans app/cofig/core.php

Configure::write('variable Name','Variable Value'); 

vous pouvez imprimer comme ça:

Configure::read('Variable Name'); 
0

Vous pouvez définir des constantes avec bootstrap.php (gâteau 3)

Ce fichier est idéal pour un certain nombre de bootstrapping commun Tâches:

Définition des fonctions de confort.

Déclaration de constantes.

Définition de la configuration du cache.

Définition de la configuration de journalisation.

Chargement des inflexions personnalisées.

Chargement des fichiers de configuration.

ref https://book.cakephp.org/3.0/en/development/configuration.html#bootstrapping-cakephp

Questions connexes