139 votes

L’accès aux constantes de classes en brindille ?

J’ai quelques constantes de la classe dans ma classe d’entité, par exemple :

En PHP normal je fais souvent `` et je voudrais faire ce genre de trucs dans la brindille. Est-ce possible ?

235voto

message Points 1392

Pour économiser votre temps. Si vous avez besoin d’accéder aux constantes de classes dans l’espace de noms, utilisez

200voto

NikiC Points 47270
<pre><code></code><p><a href="http://twig.sensiolabs.org/doc/functions/constant.html"> <code></code> fonction</a> <a href="http://twig.sensiolabs.org/doc/tests/constant.html"> <code></code> test</a>.</p></pre>

29voto

faost Points 532

À partir de 1.12.1 vous pouvez lire les constantes des instances d’objet ainsi :

13voto

user3749178 Points 71

Depuis que j'ai trouver une autre solutions "moche", il est ma solution pour les constantes de classe dans Twig. On utilise à cette extension Twig.


Disons que vous avez la classe:

namespace MyNamespace;
class MyClass
{
    const MY_CONSTANT = 'my_constant';
    const MY_CONSTANT2 = 'const2';
}

Créez et enregistrez une extension Twig:

class MyClassExtension extends \Twig_Extension
{
    public function getName()
    { 
        return 'my_class_extension'; 
    }

    public function getGlobals()
    {
        $class = new \ReflectionClass('MyNamespace\MyClass');
        $constants = $class->getConstants();

        return array(
            'MyClass' => $constants
        );
    }
}

Maintenant, vous pouvez utiliser des constantes dans Twig comme:

{{ MyClass.MY_CONSTANT }}

12voto

Si vous utilisez des espaces de noms

Important ! Utilisez les doubles barres obliques, au lieu unique

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