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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Constante scope global déclarée dans une fonction de class ?

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

par xTG » 11 août 2013, 18:47

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. :)

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

par xTG » 11 août 2013, 18:39

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

par yann18 » 11 août 2013, 18:02

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;

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

par xTG » 11 août 2013, 17:41

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 ?