Page 1 sur 1

Constante scope global déclarée dans une fonction de class ?

Posté : 11 août 2013, 17:41
par xTG
Salutations,

je reste bloqué sur un problème de définition de constante que je tente de déclarer au sein d'une fonction de class mais dans le scope global.
class Test
{
  public __construct()
  {
    define('T', 'test');
  }
}
new Test();
if( !defined('T') ) die('FAIL');
Ceci ne déclare une constante que sous le scope de l'instance.

J'ai tenté naïvement ceci :
define('::T', 'test');
$_CONSTANTS['T'] = 'test'; // lu dans un commentaire sur php.net mais j'en attendais peu vu que cette superglobale n'apparaît pas dans la doc
Mais sans plus de succès...

Quelqu'un aurait une idée ?

Re: Constante scope global déclarée dans une fonction de cla

Posté : 11 août 2013, 18:02
par yann18
tu peux définir une constante de classe dont la portée n'est valable qu'à l’intérieur de cette dernière.
class Test
{
  const T = 'teste';
  public function __construct()
  {
     self::T; //
  }
}

//afficher la constante
echo Test::T;

Re: Constante scope global déclarée dans une fonction de cla

Posté : 11 août 2013, 18:39
par xTG
Oui mais c'est pas ce scope là qui m'intéresse mais bel et bien le scope global. ;)
Car c'est rien de moins que ce que j'effectue avec mes tentatives une constante de class.

En dernier recours c'est ce que je ferrai mais ce n'est pas ma priorité.
Pour des raisons d'évolutivité je ne veux pas me raccrocher à une class.
Bien qu'on peut se demander si remplacer une class par autre chose c'est évolutif. :lol:

Re: Constante scope global déclarée dans une fonction de cla

Posté : 11 août 2013, 18:47
par xTG
Bon... A force de bidouiller cela fonctionne.
Donc j'ai du m’emmêler les pinceaux dans le nom de la constante et j'ai fini à force de triturer le code dans tous les sens à lui redonner son vrai nom...

Le code initial de ce topic doit donc fonctionner correctement. :)