2013-08-19 3 views
0

J'ai une classe:Référencer une classe statique dans une autre classe

class Site 
{ 
    public static $url; 
} 

j'attribue une valeur à ce: site :: $ url = "whatever";

J'ai une autre classe:

class Something 
{ 
    public function __Construct() 
    { 
     echo Site::$url; // does not seem to have scope? 
    } 
} 

Comment puis-je donner une portée à la classe quelque chose.

+0

sont ces classes dans le même fichier? sinon utilisez include() – UnknownError1337

+2

Si elles sont dans le même fichier, cela devrait fonctionner correctement. Je viens de copier votre code et il semble fonctionner correctement, ne peut pas recréer. Il suffit de vérifier que vous faites 'Site :: $ url =" quoi que ce soit ";' avant d'appeler 'new Something();' – ninty9notout

Répondre

3

Il devrait fonctionner comme vous l'avez écrit ci-dessus:

class Site { 
    public static $url; 
} 

class Something { 
    public function __construct() { 
    echo Site::$url; 
    } 
} 

Site::$url = 'whatever'; 
new Something(); // prints 'whatever' 

Si ce ne fonctionne pas, il est probable que les classes sont déclarées dans deux espaces de noms différents.

+0

Juste pour ajouter à cela, si vous utilisez des fichiers séparés, vous voudrez peut-être vous assurer que vous utilisez exiger plutôt que d'inclure. De cette façon, les scripts manquants sont signalés plus tôt. Avoir aussi une bonne fonction de chargeur automatique est un must, juste pour couvrir votre dos;) – j5Dev

Questions connexes