Cela a échoué:
define('DEFAULT_ROLES', array('guy', 'development team'));
Apparemment, les constantes ne peuvent pas contenir de tableaux. Quelle est la meilleure façon de contourner cela?
define('DEFAULT_ROLES', 'guy|development team');
//...
$default = explode('|', DEFAULT_ROLES);
Cela semble être un effort inutile.
Réponses:
REMARQUE: bien qu'il s'agisse de la réponse acceptée, il convient de noter qu'en PHP 5.6+, vous pouvez avoir des tableaux const - voir la réponse d'Andrea Faulds ci-dessous .
Vous pouvez également sérialiser votre baie puis la mettre dans la constante:
la source
$fruit = FRUITS[0];
Depuis PHP 5.6, vous pouvez déclarer une constante de tableau avec
const
:La syntaxe courte fonctionne également, comme vous pouvez vous y attendre:
Si vous avez PHP 7, vous pouvez enfin utiliser
define()
, comme vous l'aviez d'abord essayé:la source
define()
ici en PHP 5.6, mais cela a été corrigé pour PHP 7.0 . :)Vous pouvez les stocker en tant que variables statiques d'une classe:
Si vous n'aimez pas l'idée que le tableau puisse être modifié par d'autres, un getter pourrait vous aider:
ÉDITER
Depuis PHP5.4, il est même possible d'accéder aux valeurs des tableaux sans avoir besoin de variables intermédiaires, c'est-à-dire les travaux suivants:
la source
const AtomicValue =42; public static $fooArray = ('how','di')
Je l'utilise comme ça. J'espère que cela aidera les autres.
config.php
En dossier, où j'ai besoin de constantes.
la source
C'est ce que j'utilise. Il est similaire à l'exemple fourni par soulmerge, mais de cette façon, vous pouvez obtenir le tableau complet ou juste une seule valeur dans le tableau.
Utilisez-le comme ceci:
la source
Vous pouvez le stocker sous forme de chaîne JSON dans une constante. Et du point de vue de l'application, JSON peut être utile dans d'autres cas.
la source
À partir de PHP 5.6, vous pouvez définir des tableaux constants à l'aide de
const
mots clés comme ci-dessouset différents éléments sont accessibles comme ci-dessous:
À partir de PHP 7, les tableaux constants peuvent être définis en utilisant
define
comme ci-dessous:et différents éléments sont accessibles de la même manière qu'auparavant.
la source
Je sais que c'est une question un peu ancienne, mais voici ma solution:
Je l'ai défini car j'avais besoin de stocker des objets et des tableaux dans des constantes, j'ai donc installé également runkit sur php pour pouvoir rendre la variable $ const superglobale.
Vous pouvez l'utiliser comme
$const->define("my_constant",array("my","values"));
ou simplement$const->my_constant = array("my","values");
Pour obtenir la valeur, appelez simplement
$const->my_constant;
la source
__get
et__set
... je dois dire que cette méthode est géniale.PHP 7+
Depuis PHP 7, vous pouvez simplement utiliser la fonction define () pour définir un tableau constant:
la source
Peut même fonctionner avec des tableaux associatifs .. par exemple dans une classe.
la source
En utilisant la fonction exploser et imploser, nous pouvons improviser une solution:
Cela fera écho
email
.Si vous voulez l'optimiser davantage, vous pouvez définir 2 fonctions pour faire les choses répétitives pour vous comme ceci:
J'espère que cela pourra aider . Codage heureux.
la source
Faire une sorte de truc ser / deser ou encoder / décoder semble moche et vous oblige à vous souvenir de ce que vous avez fait exactement lorsque vous essayez d'utiliser la constante. Je pense que la variable statique privée de classe avec accesseur est une solution décente, mais je vous ferai mieux. Il suffit d'avoir une méthode getter statique publique qui renvoie la définition du tableau constant. Cela nécessite un minimum de code supplémentaire et la définition du tableau ne peut pas être accidentellement modifiée.
Si vous voulez vraiment le faire ressembler à une constante définie, vous pouvez lui donner un nom tout en majuscules, mais il serait déroutant de se rappeler d'ajouter les parenthèses '()' après le nom.
Je suppose que vous pourriez rendre la méthode globale pour être plus proche de la fonctionnalité define () que vous demandiez, mais vous devriez vraiment cibler le nom constant de toute façon et éviter les globaux.
la source
Vous pouvez définir comme ceci
la source
Oui, vous pouvez définir un tableau comme constant. A partir de PHP 5.6 , il est possible de définir une constante comme expression scalaire, et il est également possible de définir une constante de tableau . Il est possible de définir des constantes en tant que ressource, mais cela doit être évité, car cela peut entraîner des résultats inattendus.
Avec la référence de ce lien
Ayez un codage heureux.
la source
Si vous recherchez cela depuis 2009 et que vous n'aimez pas AbstractSingletonFactoryGenerators, voici quelques autres options.
N'oubliez pas que les tableaux sont "copiés" lorsqu'ils sont attribués ou, dans ce cas, retournés, vous obtenez donc pratiquement le même tableau à chaque fois. (Voir le comportement de copie sur écriture des tableaux en PHP.)
la source
si vous utilisez PHP 7 et 7+, vous pouvez également utiliser la récupération comme ceci
la source
Les constantes ne peuvent contenir que des valeurs scalaires, je vous suggère de stocker la sérialisation (ou la représentation codée JSON) du tableau.
la source