2010-04-11 8 views
0

J'ai un fichier externe avec quelques vars d'exiger dans ma classe php et partager avec toutes les fonctions de ma classe:require_once vars externes et partager avec d'autres funcions dans une classe php

vars.inc:

<?php 
$a = 1; 
?> 

class.php:

<?php 
class A{ 
    public function __construct(){ 
    require_once("vars.inc"); 
    } 
    public function aB{ 
    echo $a; 
    } 
} 
?> 

mais il ne fonctionne pas: l'un $ var est définie

comment puis-je faire?

remercie tous

Répondre

1

Les variables en fonction existent uniquement dans la portée locale, à moins de les affecter à des variables de classe.

Par exemple, si vous aviez dans votre page incluse:

<?php 
$myvariable = 'hello'; 
?> 

Ensuite, votre classe doit utiliser le $this pour l'assigner à une variable de classe.

myvariable = $ myvariable; } Fonction publique aB { echo $ myvariable; }} ?>

Voir la manual pour plus d'informations sur la portée des variables.

+0

merci, cela fonctionne, mais nous devons récupérer var travers $ this-> var. Salut! – frx08

0

C'est un problème d'envergure. Peut-être que ce sera mieux:

<?php 
class A{ 
    protect $a; 
    public function __construct(){ 
    require_once("vars.inc"); 
    $this->a = $a; 

    } 
    public function aB{ 
    echo $this->a; 
    } 
} 
?> 
+0

-1. Non seulement cela ne marche pas ($ a disparaît après que __construct() se produit), mais cela encourage une mauvaise utilisation des globals. La page incluse hérite de la portée de l'endroit où elle est incluse, sauf si vous définissez des fonctions dans la page incluse, auquel cas les fonctions sont globales. Aussi, pas besoin de réduire mon commentaire. –

+0

Vous avez été rapide à downvote. Si vous auriez attendu, vous m'auriez vu élargir ma réponse et fournir une meilleure alternative. –

+0

Mais votre code initial est erroné. Lorsque vous avez besoin de __construct, il devient une variable locale de la construction. Pour que votre premier code fonctionne, le fichier vars.inc devrait être requis en dehors de la classe – AntonioCS

0

C'est généralement une mauvaise pratique. Donnez les variables à la classe via le constructeur ou les méthodes, ou créez une classe statique qui contient les variables ou la variable globalement accessible qui contiendra ces valeurs. Cela dépend de votre code et exactement vous essayez de le faire.