65 votes

php const arrays

Est-ce le seul moyen d'avoir des tableaux comme constantes en php ou est-ce un mauvais code ?

class MyClass
{
    private static $myArray = array('test1','test2','test3');

    public static function getMyArray()
    {
       return self::$myArray;
    } 
}

1 votes

Ce n'est pas constant ? c'est seulement statique... imho vous pouvez manipuler le tableau si vous le pointez à travers la méthode... je ne pense pas qu'il soit possible de déclarer un type non-primitif comme constant en php...

0 votes

Je sais que ce n'est pas constant, c'est le but de ma question. Est-ce que la seule façon d'imiter un tableau avec un comportement constant

3 votes

À partir de PHP 5.6.0 (28 août 2014), il est possible de définir une constante de tableau ( see http://stackoverflow.com/a/30031923/1873197

1voto

jfmercer Points 736

Vous avez créé un tableau statique, pas un tableau constant. Les variables statiques sont mutables ; les constantes sont immuables. Votre code n'est pas mauvais, mais il ne fait pas ce que vous voulez qu'il fasse.

En PHP 5.6, vous pouvez déclarer const réseaux. Veuillez consulter mon explication précédente .

Peut-être que vous voulez quelque chose comme ça :

class MyClass
{
    const MY_ARRAY = array('test1','test2','test3');

    public function getMyArray()
    {
       return MY_ARRAY;
    } 
}

Notez que les constantes n'ont pas de $ préfixe, qui indique leur immuabilité. $foo est une variable ; FOO n'est pas. De plus, les noms des constantes prennent toujours la majuscule, du moins dans les langages de programmation auxquels j'ai été exposé. Ceci n'est pas imposé par le compilateur ; il s'agit simplement d'une convention de style de codage (presque ?) universelle. Mots clés de la visibilité public , protected y private ne s'appliquent pas aux constantes. Enfin, static peut ou non s'appliquer selon que vous voulez ou non que la fonction soit static .

1voto

Rabih Points 268

A partir de PHP 5.6, il est possible de définir une constante comme une expression scalaire, et il est également possible de définir une constante de type tableau.

class foo {
   const KEYS = [1, 3, 6, 7];
}
//
echo foo::KEYS[0]; // 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X